009 数据类型及数据运算及格式化输出format
本节内容:
- 数据类型
- 数字
- 布尔值
- 字符串
- 字符串的格式化输出format
- 数据运算
- 算数运算
- 比较运算
- 赋值运算
- 逻辑运算
- 成员运算
- 身份运算
- 位运算
一、数据类型
1、数字
int(整型)
在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
long(长整型)
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
float(浮点型)
浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
complex(复数)
复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
注:Python中存在小数字池:-5 ~ 257
函数:
abs(3)=3 绝对值
int(2.7)=3,int(-2.7)=-2 取大于且最接近该值的整数
round(2.5,2)=3.00 四舍五入,保留2位小数
2、布尔值
真或假
1 或 0

3、字符串
字符串拼接:
python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。
字符串格式化输出
name = "dream" print("i am %s " % name)
PS: 字符串是 %s;整数 %d;浮点数%f

字符串特性:不可修改,参考练习:
#基础部分
name='dRe吴am'
print(name.capitalize()) #首字母大写
print(name.casefold())#大写全部变小写
print(name.center(50,"-"))#输出 '----------------------dReam-----------------------'
print(name.count('ea')) #统计ea出现次数
print(name.encode())#将字符串编码成bytes格式"b'dRe\xe5\x90\xb4am'"
print(name.endswith("am")) #判断字符串是否以am结尾
print("dRe\t吴am".expandtabs(10))#输出'dRe 吴am', 将\t转换成多长的空格
print(name.find('am'))#查找am,找到返回其索引, 找不到返回-1
name.index('a') #返回a所在字符串的索引
'9aA'.isalnum() #True
'9'.isdigit() #是否整数
print(name.isnumeric())
print(name.isprintable())
print(name.isspace())
print(name.istitle())
print(name.isupper())
print("|".join(['alex','jack','rain']))
print('alex|jack|rain')
# format和format_map
msg = "1my name is {}, and age is {}"
print(msg.format("Dream",21))
msg = "2my name is {1}, and age is {0}"
print(msg.format("Dream",21))
msg = "3my name is {name}, and age is {age}"
print(msg.format(age=21,name="Dream"))
msg = "4my name is {name}, and age is {age}"
print(msg.format_map({'name':'Dream','age':21}))
#maketrans
intab = "aeiou" #This is the string having actual characters.
outtab = "12345" #This is the string having corresponding mapping character
trantab = str.maketrans(intab, outtab)
str = "this is string example....wow!!!"
str.translate(trantab)
print(intab)
print(outtab)
print(str)
print(str.translate(trantab))
msg = "my name is {}, and age is {}"
n4="Hello 2orld"
print(msg.partition('is')) #输出('my name ', 'is', ' {}, and age is {}')
print("Dream, chinese name is Memory".replace("ea","EA",1))
msg.swapcase #大小写互换
msg.zfill(40)
'00000my name is {name}, and age is {age}'
n4.ljust(40,"-")#'Hello 2orld-----------------------------'
n4.rjust(40,"-")#'-----------------------------Hello 2orld'
b="ddefdsdff_哈哈"
b.isidentifier() #检测一段字符串可否被当作标志符,即是否符合变量命名规则
4、字符串的格式化format
ljust 左对齐 str.ljust(w) 《==》{0,<ws}.format(str)
rjust 右对齐 str.rjust(w) 《==》{0,>ws}.format(str)
center 居中对齐str.center(w) 《==》{0,^ws}.format(str)
0表示位置索引,s表示类型为字符型(d为整型,%为百分比,n任何类型数字)
print("0123456789012345678901234567") print("Rank".ljust(5),"Player".ljust(20),"HR".rjust(3),sep="") print('1'.center(5),"Barry Bonds".ljust(20),"762".rjust(3),sep="") print('2'.center(5),"Hank Aaron".ljust(20),"755".rjust(3),sep="") print('3'.center(5),"Babe Ruth".ljust(20),"714".rjust(3),sep="") E:\PycharmProjects\PythonStudy\venv\Scripts\python.exe E:/PycharmProjects/PythonStudy/test2.py 0123456789012345678901234567 Rank Player HR 1 Barry Bonds 762 2 Hank Aaron 755 3 Babe Ruth 714
等价于
print("0123456789012345678901234567") print("{0:^5s}{1:<20s}{2:>2s}".format("Rank","Player","HR")) print("{0:^5n}{1:<20s}{2:>2s}".format(1,"Barry Bonds","762")) print("{0:^5n}{1:<20s}{2:>2s}".format(3,"Hank Aaron","755")) print("{0:^5n}{1:<20s}{2:>2s}".format(3,"Babe Ruth","714")) E:\PycharmProjects\PythonStudy\venv\Scripts\python.exe E:/PycharmProjects/PythonStudy/test2.py 0123456789012345678901234567 Rank Player HR 1 Barry Bonds 762 3 Hank Aaron 755 3 Babe Ruth 714
常用格式化数字
print(1,"{0:10d}".format(12345678))#数字是整型 12345678 print(2,"{0:10,d}".format(12345678))#增加千分位符 12,345,678 print(3,"{0:10.2f}".format(1234.5678))#四舍五入保留2位小数 1234.57 print(4,"{0:10,.2f}".format(1234.5678))#四舍五入并添加千分位(保留2位小数) 1,234.57 print(5,"{0:10,.3f}".format(1234.5678))#四舍五入并添加千分位(保留3位小数) 1,234.568 print(6,"{0:10.2%}".format(12.345678))# 转为百分数并四舍五入(保留2位小数) 1234.57% print(7,"{0:10.3%}".format(12.345678))#转为百分数并四舍五入(保留3位小数) 1234.568%
二、数据运算
1、算数运算

2、比较运算

3、赋值运算

4、逻辑运算

5、成员运算

6、身份运算

7、位运算

# !/usr/bin/python a = 60 # 60 = 0011 1100 b = 13 # 13 = 0000 1101 c = 0 c = a & b; # 12 = 0000 1100 print ("Line 1 - Value of c is ", c) c = a | b; # 61 = 0011 1101 print("Line 2 - Value of c is ", c) c = a ^ b; # 49 = 0011 0001 #相同为0,不同为1 print("Line 3 - Value of c is ", c) c = ~a; # -61 = 1100 0011 print("Line 4 - Value of c is ", c) c = a << 2; # 240 = 1111 0000 print("Line 5 - Value of c is ", c) c = a >> 2; # 15 = 0000 1111 print ("Line 6 - Value of c is ", c)
8、运算符优先级


浙公网安备 33010602011771号