Python开发【第二篇】: 基本数据类型(一)

1. 整型

??整型即整数,用 int 表示,在 Python3 中整型没有长度限制。

1.1 内置函数

??1. int(num, base=None)

??int( ) 函数用于将字符串转换为整型,默认转换为十进制。

>>> int(‘123‘)
123
>>> int(‘123‘, base=16)
291

??2. bit_length( num)

??当前数字的二进制,至少用多少位表示。

>>> a = 5
>>> a.bit_length()
3

2. 浮点型

??浮点型即小数,用 float 表示,也可以用科学计算法表示。

>>> a = 0.005
>>> a			# 科学计数法
5e-3

??类型转换:

>>> float(2)
2.0
>>> float(‘2‘)
2.0

3. 布尔型

??布尔型是一种特殊的整型,用 True 和 False 或 0 和 1 表示,Python 中是 False 的有:

  • None、""、0、、()、

??类型转换:

>>> bool(None)
False

4. 字符串

??字符串是 Python 里的文本,用 str 表示,创建一个字符串使用单引号【‘ ‘】或双引号【" "】,引起即可。

字符串一旦创建,不可修改,同时它也是可迭代对象

??如果字符串中的内容既有单引号,又有双引号,有两种办法解决:

  • 使用转义符号【\】对字符串中的引号转义
>>> ‘Let\‘s go‘
"Let‘s go"
  • 使用不同的引号表示
>>> "Let‘s go"
"Let‘s go"

4.1 长字符串

??当字符串内容行数比较多时,我们可以使用 三重引号引起内容。

>>> print("""
... 从明天起,做一个幸福的人
... 喂马,劈柴,周游世界
... """)

从明天起,做一个幸福的人
喂马,劈柴,周游世界

4.2 内置方法

??PART 1:

# capitalize():将字符串内容首字母转换为大写
>>> s = ‘i am rose‘
>>> s.capitalize()
‘I am rose‘

# casefold():将字符串的所有字符转换为小写,与 lower()一样,但是可以转换特殊字符

# lower():将字符串里的所有字符都转换为小写
>>> s = ‘i love You‘
>>> s.lower()
‘i love you‘

# upper():将字符串里的所有字符都转换为大写
>>> s.upper()
‘I LOVE YOU‘

# count(sub,start,end):统计字符串中某个字符出现的次数,可指定范围
>>> s = ‘i am Rose, age 18‘
>>> s.count(‘a‘)
2
>>> s.count(‘a‘, 3, 5)
0

# startswith(suffix,start,end)、endswith(suffix,start,end)
# 查找这个字符串,判断是以什么字符开头或结尾,返回布尔值,可指定范围
>>> s = ‘i am Rose, age 18‘
>>> s.startswith(‘I‘)
True
>>> s.endswith(‘I‘)
False

# find(sub,start,end):查找某个字符,返回其下标,若有多个只返回第一个的下标,若不存在则返回 -1
>>> s = ‘I am rose‘			# 空格也占位
>>> s.find(‘a‘)
2

# index(sub,start,end):与 find()一样,但是不存在则抛出 ValueError

# format(*args,**kwargs):格式化字符串,将字符串中的占位符替换为指定值,不限参数(可以是位置、关键字参数)
>>>‘I am {0}, age {1}‘.format(‘rose‘, 18)	# 位置参数
>>>‘I am {name}, age {age}‘.format(name=‘rose‘, age=18)		# 关键字参数

>>> d = {‘name‘: ‘rose‘, ‘age‘: 18}		# 传入字典(加 **)
>>>‘I am {name}, age {age}‘.format(**d)

>>> l = [‘rose‘, 18]		# 传入列表(加 *)
>>> ‘I am {:s}, age {:d}‘.format(*l)
‘I am rose, age 18‘

# format_map():格式化字符串,接收字典
>>> ‘I am {name}, age {age}‘.format_map({‘name‘: ‘rose‘, ‘age‘: 18})
‘I am rose, age 18‘

# isalnum():判断当前字符串是否只包含字母或数字,返回布尔值
>>> s1 = ‘sda12‘
>>> s.isalnum()
True
>>> s2 = ‘12‘
>>> s2.isalnum()
True
>>> s3 = ‘s_‘
>>> s3.isalnum()
False

# isalpha():判断当前字符串所有字符是否都是字母,包括汉字,返回布尔值
>>> s1 = ‘sda12‘
>>> s1.isalpha()
False
>>> s2 = ‘汉字‘
>>> s2.isalpha()
True

# isdecimal():判断当前字符串所有字符是否都是数字,返回布尔值
>>> s = ‘123‘
>>> s.isdecimal()
True
>>> s1 = ‘123s‘
>>> s1.isdecimal()
False

# isdigit():判断当前字符串所有字符是否都是数字,可识别 ②,返回布尔值
>>> s2 = ‘②‘
>>> s2.isdigit()
True
>>> s3 = ‘二‘
>>> s3.isdigit()
False

# isnumeric():判断当前字符串所有字符是否都是数字,可识别 ②,和二,返回布尔值
>>> s3.isnumeric()
True

# isprintable():判断字符串是否存在不可显示的字符,如 \t、\n,空格等返回布尔值
>>> s6 = ‘‘
>>> s6.isprintable()
True
>>> s6 = ‘ ‘
>>> s6.isprintable()
True

# isspace():判断字符串是否都是空格,返回布尔值
>>> s5.isspace()
True
>>> s6 = ‘‘
>>> s6.isspace()
False

# istitle():判断字符串中每个单词首字母是否都是大写,即是否是标题
>>> s = ‘i love you‘
>>> s.istitle()
False

# title():将字符串标题化
>>> s.title()
‘I Love You‘

??PART 2:

# join(iterable):以字符串为分隔符,插入到序列的每个字符间,传入的列表、元组等,其中的元素必须是字符串不能是数字
>>> ‘-‘.join(‘内置方法‘)		# 以 - 分隔符
‘内-置-方-法‘
>>> ‘ ‘.join(‘内置方法‘)
‘内 置 方 法‘
>>> ‘-‘.join([‘abd‘, ‘123‘])
‘abd-123‘

# ljust(width,fillchar=None):将字符串居左,右边以字符填充,默认以空格填充,可以指定宽度
# rjust(width,fillchar=None):将字符串居右,左边以字符填充,默认以空格填充,可以指定宽度
# center(width,fillchar=None):将字符串居中,两边以字符填充,默认以空格填充,可以指定宽度
>>> s = ‘love‘
>>> s.ljust(10, ‘*‘)
‘love******‘
>>> s.rjust(10, ‘*‘)
‘******love‘
>>> s.center(10, ‘*‘)
‘***love***‘

# zfill(width):返回长度为 width 的字符串,原字符串右对齐,前面以 0 填充
>>> s = ‘abc‘
>>> s.zfill(10)
‘0000000abc‘

# islower()、isupper():判断字符串所有字符是否都是小写或大写,返回布尔值
>>> s = ‘i love you‘
>>> s.islower()
True
>>> s.isupper()
False

# lstrip(chars=None):去掉字符串左边所有空格,包括 \t、\n
# rstrip(chras=None):去掉字符串右边所有空格,包括 \t、\n
# strip(chras=None):去掉字符串两边所有空格,包括 \t、\n
>>> s = ‘   123  ‘
>>> s.lstrip()
‘123  ‘
>>> s.rstrip()
‘   123‘
>>> s.strip()
‘123‘

# partition(sep):separator 分隔符,从左边开始分割字符串,只能分成三份,多个时只返回第一个
>>> s = ‘testsadsabc‘
>>> s.partition(‘s‘)
(‘te‘, ‘s‘, ‘tsadsabc‘)

# rpartition(sep):从右边开始分割字符串,只能分成三份,多个时只返回第一个
>>> s.rpartition(‘s‘)
(‘testsad‘, ‘s‘, ‘abc‘)

# split(sep=None,maxsplit=-1):不带参数,默认以空格分割字符串,可指定最大分割次数,返回分割后子串列表
>>> s = ‘testlosve‘		# 不包含分割字符
>>> s.split(‘s‘)
[‘te‘, ‘tlo‘, ‘ve‘]

# rsplit(sep=None,maxsplit=-1):从右边分割字符串,与 split()类似
>>> s.rsplit(‘s‘)
[‘te‘, ‘tlo‘, ‘ve‘]

# splitlines([keepends]):以 \n 分割,返回一个列表,TRUE、False 表示是否保留换行符
>>> s = ‘testab\ncd\nh‘
>>> s.splitlines()
[‘testab‘, ‘cd‘, ‘h‘]
>>> s.splitlines(True)
[‘testab\n‘, ‘cd\n‘, ‘h‘]
>>> s.splitlines(False)
[‘testab‘, ‘cd‘, ‘h‘]

# swapcase():翻转大小写
>>> s = ‘abc‘
>>> s.swapcase()
‘ABC‘

# maketrans():用于创建字符映射的转换表,两个参数,第一个为要转换的字符,第二个为转换的目标,两者长度一致
# translate(table):根据 table规则(由 str.maketrans(‘a‘, ‘b‘)制定),转换字符串字符。
>>> s = ‘this is string‘
>>> s.translate(s.maketrans(‘aeiou‘, ‘12345‘))		# aeiou 与 12345 一一对应
‘th3s 3s str3ng‘

# replace(old,new[,count]):把字符串中的 old 字符替换成 new 字符,count 为替换次数,可选
>>> s = ‘hello‘
>>> s.replace(‘e‘, ‘h‘)
‘hhllo‘
>>> s		# 不改变原始字符串
‘hello‘

# expandtabs([tabsize=8]):将字符串中的 \t 转换为空格,可指定长度,默认 tabsize = 8
>>> s = ‘username\teamil\tpassword\nlixiang\[email protected]\t123456‘
>>> s.expandtabs(20)
username            eamil               password
lixiang             [email protected]      123456

# bit_length():返回一个 int 用二进制表示需要多少位,不包含前导数和符号
>>> n = 37
>>> n.bit_length()
6

# bin(number):返回一个 int 的二进制表示
>>> bin(37)
‘0b100101‘			# 37 用二进制表示,刚好 6 位

# encode(encoding=‘utf-8‘, errors=‘strict):以 encoding 方式编码字符串,errors 指定不同的错误处理方案,返回编码后的字符串,是一个 bytes 对象
# bytes.decode(encoding=‘utf-8‘, errors=‘strict):以指定的编码格式解码 bytes 对象,默认 utf-8
>>> s = ‘编码解码‘
>>> s1 = s.encode(‘utf-8‘)
>>> s2 = s.encode(‘gbk‘)
>>> s1
b‘\xe7\xbc\x96\xe7\xa0\x81\xe8\xa7\xa3\xe7\xa0\x81‘
>>> s2
b‘\xb1\xe0\xc2\xeb\xbd\xe2\xc2\xeb‘

>>> s1.decode(‘utf-8‘, ‘strict‘)		# 解码,以什么方式编码就以什么方式解码
‘编码解码‘
>>> s2.decode(‘gbk‘, ‘strict‘)
‘编码解码‘

4.3 索引

??获取字符串中某个字符,只需传入索引即可,索引从 0 开始,支持负数索引(最后一个为 -1)

>>> s = ‘hello‘
>>> s[0]
‘h‘
>>> s[-1]
‘o‘

??字符串是可迭代对象,因此也支持切片:

>>> s = ‘hello‘
>>> s[0:2]
‘he‘
>>> s[-2:-1]
‘l‘

??同样地 也支持 for 循环遍历其中每一个元素:

>>> for i in s:
...     print(i)
...
h
e
l
l
o

4.4 内置函数

??len()可以获取字符串长度

>>> len(‘hi‘)
2

4.5 字符串拼接

??为了保证内存的连续性,字符串一旦创建,不允许被修改;一旦修改,将会产生新的字符串,使用连接符 + 可以将两个字符串拼接成一个新的字符串。

>>> myteacher = ‘李‘
>>> yourteacher = ‘老师‘
>>> ourteacher = myteacher + yourteacher
>>> ourteacher
‘李老师‘

??Python 中不同数据类型是不能拼接的,但是可以使用别的方法实现:

>>> print(‘score‘ + ‘:‘ + str(95))	# 使用 + 连接符需要考虑是否是相同数据类型
score:95
>>> print(‘score:‘,95)         # 可以不用考虑数据类型
score: 95

4.6 原始字符串

??所有的字符串都是按照字面的意思来使用,没有转义特殊和不能打印的字符。

??当字符串中有反斜杠 \ 时,往往会被当成转义字符处理,而有些时候我们并不需要将反斜杠保存下来,有两种方法,一是再加一个反斜杠将其保存下来,但是当反斜杠很多时候,就显得很乱:

>>> s = ‘c:\\now‘
>>> s
‘c:\\now‘
>>> print(s)
c:\now

??另一个方法就是使用原始字符串 raw,只需要在字符串前面加个 r 即可,它会自动在程序内部添加反斜杠,无需手动添加:

>>> s = r‘c:\now‘
>>> s				# 自动添加 ‘c:\\now‘
>>> print(s)
c:\now

4.7 格式化字符串

??格式化字符串,即将字符串中的占位符替换为指定值。

??1. format()

??format()方法接收位置参数和关键字参数,分别使用位置、关键字占位:

??语法:

format(*args,**kwargs)

??位置参数:

>>>‘I am {0}, age {1}‘.format(‘rose‘, 18)	# 位置参数
I am rose, age 18

??关键字参数:

>>>‘I am {name}, age {age}‘.format(name=‘rose‘, age=18)		# 关键字参数
I am rose, age 18

??也可以接收列表和字典作为参数传入,只需在列表前面添加 *,字典前面添加 ** 即可:

>>> d = {‘name‘: ‘rose‘, ‘age‘: 18}		# 传入字典(加 **)
>>>‘I am {name}, age {age}‘.format(**d)

>>> l = [‘rose‘, 18]		# 传入列表(加 *)
>>> ‘I am {:s}, age {:d}‘.format(*l)
‘I am rose, age 18‘

??2. 格式化操作符 %

??Python 提供了一系列的格式化操作符,用于格式化字符串。

Python 常见格式化操作符及含义

符号 含义
%s 格式化字符串
%d 格式化整数
%c 格式化字符及 ASCII 码
%o 格式化无符号八进制数
%x 格式化无符号十六进制数
%X 格式化无符号十六进制(大写)
%f 格式化浮点数,可指定小数点后的精度
%e 用科学计数法格式化浮点数
%E 作用同 %e,用科学计数法格式化浮点数
%g 根据值的大小决定使用 %f 或 %e
%G z作用同 %g,根据值的大小决定使用 %f 或 %E

??示例:

>>> msg = ‘I am %s, age %d‘ % (‘rose‘, 18)
>>> msg
‘I am rose, age 18‘                                               

# 保留两位有效小数(在 f 前面添加 .2)
>>> s = ‘percent: %.2f‘ % 97.687
>>> s
‘percent: 97.69‘

# 保留百分号(在 f 后面添加两个 %)
>>> s1 = ‘percent: %.2f%%‘ % 97.687
>>> s1
‘percent: 97.69%‘ 

>>> s2 = ‘I am %(name)s, age %(age)d‘ % {‘name‘:‘rose‘, ‘age‘:18}
>>> s2
‘I am rose, age 18‘ 

>>> s3 = ‘I am %(pp).2f‘ % {‘pp‘:123.4567}
>>> s3
‘I am 123.46‘

5. 练习题

??1. Python 2 和 Python 3 中 range()区别?

  • **Python 2:**直接全部生成所有数字,xrange 与 Python 3 一样
  • **Python3:**循环一次生成一个,节省内存

??2. 实现一个加法计算器(如 5 + 9)?

value = ‘5 + 9‘
v1, v2 = value.split(‘+‘)
print(int(v1) + int(v2))

??3. int 和 2、str 和 ‘xx‘ 的关系?

??类和对象的关系

??4. 计算用户输入的内容有几个数字,几个字母?

n = input(‘请输入内容:‘)		# input()接收的内容为 字符串
a = 0, b = 0			# 统计数字、字母
for i in n:				# 对内容遍历循环
    if i.isdecimal():	# 判断是否是数字
        a += 1
    else:
        b +=1
print(a, b)

??5. 制作随机验证码,不区分大小写

??流程如下:

  • 用户执行程序
  • 给用户显示要输入的验证码
  • 用户输入验证码
  • 判断用户输入的验证码是否和随机生成的相同,相同则打印输入正确,否则重新输入
# 每次生成一个字符,循环四次,生成四个字符,即一个验证码
import random

verify_coe = ‘‘
for i in range(4):
    current = random.randrange(0, 4)    #
    if current != i:
    # chr()可以将数字转换为 ASCII 码表中所对应的字符,65~90 对应 A~Z,98~122 对应 a~z
    # 生成一个 65~90 的随机整数,并将其转换为大写字母
        temp = chr(random.randint(65, 90))
    else:
        temp = random.randint(0, 9)     # 生成一个 0~9 的随机整数
    verify_code += str(temp)

while True:
    n = input(‘请输入验证码:‘)
    if n.upper == verify_code:
        print(‘输入正确‘)
        break
    else:
        print(‘输入错误,请重新输入‘)

??使用函数写:

import random

def check_code():
    """
    生成随机验证码
    :return: 验证码
    """
    verify_code = ‘‘
    for i in range(4):
        current = random.randrange(0, 4)    #
        if current != i:
            # chr()可以将数字转换为 ASCII 码表中所对应的字符,65~90 对应 A~Z,98~122 对应 a~z
            # 生成一个 65~90 的随机整数,并将其转换为大写字母
            temp = chr(random.randint(65, 90))
        else:
            temp = random.randint(0, 9)     # 生成一个 0~9 的随机整数
        verify_code += str(temp)
    return verify_code

def verify(code):
    """
    验证用户输入的验证码是否与随机生成的一致
    :param code:
    :return:
    """
    while True:
        n = input(‘请输入验证码:‘)
        if n.upper() == code:       # 不区分大小写
            print(‘输入正确‘)
            break
        else:
            print(‘输入错误,请重新输入!‘)

def main():
    code = check_code()
    print(code)
    verify(code)
main()

??6. 制作表格

??循环提示用户输入:用户名、密码和邮箱(不超过 20 个字符,超过只取前 20 个字符,)若输入 q 或 Q 则退出,将内容以表格形式显示:

s = ‘‘
while True:
    user = input(‘请输入用户名:‘)
    if user == ‘q‘ or user == ‘Q‘:
        break
    psd = input(‘请输入密码:‘)
    email = input(‘请输入邮箱:‘)
    user_one = user[0:20]
    psd_one = psd[0:20]
    email_one = email[0:20]

    temp1 = ‘username\tpassword\temial\n‘
    temp2 = ‘{0}\t{1}\t{2}\n‘
    a = temp2.format(user_one, psd_one, email_one)
    s += a
    print(temp1.expandtabs(20), s.expandtabs(20))
请输入用户名:rose
请输入密码:123456
请输入邮箱:[email protected]
username            password            emial
 rose                123456              [email protected]

原文地址:https://www.cnblogs.com/midworld/p/9917810.html

时间: 2024-10-25 02:47:29

Python开发【第二篇】: 基本数据类型(一)的相关文章

python开发第二篇

1.第一个程序: #-*-coding:utf-8-*- print("hello word") 1.1解析下: (1)第一行的意思:就是告诉python解释器在编译时候,要使用utf-8的编码去解释. (2)第二行就是打印出"hello word" 咯. 1.2然后怎么执行这段程序呢? (1)打开笔记本,把上面的代码保存成已.py后缀的文件,然后打开cmd,在黑色窗口输入"python 文件的路径",回车...运行完毕. 2.变量 什么是变量?

python开发[第二篇]------str的7个必须掌握的方法以及五个常用方法

在Python中 基本数据类型有 str int boolean list dict tuple等 其中str的相关方法有30多个 但是常用的就以下7个 join  # split # find # strip# upper # lower # replace 除了以上7个常用方法外,还有个五基本方法务必牢记 在以后会经常用到 一.for循环 # for 变量名 in 字符串: # 变量名 # break # continue # index = 0 # while index < len(te

微信开发第二篇:工具篇

自从写了第一篇后,最近一直在整理另一个项目的需求,没有继续研究下去,今天晚上终于开始了我的第二篇. 本次微信的项目是想基于H5做的,所以现在的想法还是先从前端入手. 要做一个移动端H5的网站有很多种方式: 1.使用Html5.css3.js自己从头开始做. 但如果这样,对于目前主要从事项目管理及后端开发工作的我,无疑是困难重重:另外自己也已经对前端的东西很久没碰过了.如果选择这种方式,肯定会本末倒置.最后说不定整个项目都没得戏(虽说这个项目完全是自己的个人爱好!!) 2.使用现在已有的移动端H5

python学习第二周(数据类型、字符串、列表、元祖、字典)

一.模块.库 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持. 模块初始化:模块就是库,库可以是标准库或者是第三方库. sys模块 os模块 Sys.path 导入模块的时候,先从当前目录下面查找. 我们起名字时候不能和导入的模块名字相同. Python的第三方库 E:\\python_path\\base\\lib\\site-packages Python的标准库位置 E:\\python_path\\base Sys.ar

Python 语言学习 第二篇:数据类型(字符串)

字符串是一个有序的字符的不可变序列,用于存储基于文本的信息.字符串所包含的字符存在从左至右的位置顺序,不可以在原处(in-place)修改.Python没有C语言的字符和字符串之分,只有字符串.从严格意义上说,字符串是单个字符的序列,支持元素基于位置的操作,能够通过位置索引字符:由于字符串具有不可变性,不能对原始的字符串进行修改,也就是说,不能通过对其某一位置进行赋值而修改字符串. 一,字符串常量 字符串常量使用成对的单引号或双引号来表示,两者表示的效果是一样的. 1,在字符串常量中表示引号 如

python笔记 [第二篇]:基础数据类型

运算符 1.算数运算: 2.比较运算: 3.赋值运算: 4.逻辑运算: 5.成员运算: 基础数据类 1.数字: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位系统上,整数的位数为64位,取值范围为-2**63-2**63-1,即-9223372036854775808-9223372036854775807 class int(object): def bit_length(self): "&q

python速成第二篇(小爬虫+文件操作+socket网络通信小例子+oop编程)

大家好,由于前天熬夜写完第一篇博客,然后昨天又是没休息好,昨天也就不想更新博客,就只是看了会资料就早点休息了,今天补上我这两天的所学,先记录一笔.我发现有时候我看的话会比较敷衍,而如果我写出来(无论写到笔记本中还是博客中,我都有不同的感觉)就会有不同的想法,我看书或者看资料有时候感觉就是有一种惰性,得过且过的感觉,有时候一个知识想不通道不明,想了一会儿,就会找借口给自己说这个知识不重要,不需要太纠结了,还是去看下一个吧,然后就如此往复下去,学习就会有漏洞,所以这更加坚定了我写博客来记录的想法.

python开发基础篇(一)

变量及其定义规范 1 #变量名(相当于门牌号,指向值所在的空间),等号,变量值 2 name='Egon' 3 sex='male' 4 age=18 5 level=10 变量的定义规范 #1. 变量名只能是 字母.数字或下划线的任意组合 #2. 变量名的第一个字符不能是数字 #3. 关键字不能声明为变量名['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', '

python入门第二篇

python 有切片和迭片的两种操作 支持list 和tuple两种数据类型 list: 第一种操作[0:1] :以第0个索引开始,到索引1 结束, [:] 什么都没有写,则是从0开始. 第二种操作[::]  第二个分号,则是指的是采样的频率. 迭片的操作:所谓的迭代就是循环: #!/usr/bin/python d={'a':1,'b':2, 'c':3, 'd':5} print d for key in d: print key for value in d.itervalues(): p

python基础-第二篇

一.运算符 1.算数运算: 算数运算符相信大家都不陌生吧,尤其是加减乘除,好!那我就带着大家看看最后三个,这三个到底是干什么玩意的? %,取两数相除的余数,看图: **,x的多少次幂,看图: //,取整除,你可以理解为向下取整,看图: 2.比较运算: 注意:当为一个等号时,多为赋值,两个等号为比较,另外不等于常用是!= 3.赋值运算: 4.逻辑运算: 逻辑运算符里,and和or好理解,那我就讲一下not:这家伙就是唱反调的--看图 5.成员运算: 成员运算符,从字面上意思去理解,问谁是不是某组织