11、数据的基本类型:数值
整数类型:int
常见的运算
运算符 | 功能 | 备注 |
---|---|---|
m + n | 加法 | |
m - n | 减法 | |
m * n | 乘法 | |
m // n | 整数除法 | 结果是商的整数部分 |
m / n | 除法 | ”真“除法,得到小数 |
m % n | 求余数 | |
divmod(m, n) | 求整数除法和余数 | 会得到两个整数, 一个是m // n,另一个是m % n |
m ** n | 求乘方 | 整数m的n次方 |
abs(m) | 求绝对值 |
比较大小
m == n
m > n
m >= n
m < n
m <= n
比较简单,看了就懂,不再详述
各进制表示方法,会英语就容易记
进制 | 前缀 | 例子 |
---|---|---|
十进制decimal | 无前缀 | 367 |
二进制binary | 0b | 0b101101111 |
八进制octal | 0o | 0o557 |
十六进制 hexadecimal | 0x | 0x16f |
浮点数:float
操作与整数类似
浮点数受到17位有效数字的限制
进制转换导致精度误差
这里要提一下,浮点数四舍五入时有可能失败,如
>>>'%.2f' % 1.255
'1.25'
为什么会这样?有兴趣了解的自行百度。对精度要求高的,如金融领域,利用decimal模块来解决这个问题
复数:complex
复数之间只能比较是否相等
复数:a+bi
进行复数计算,有 专门的模块 cmath
更多的数学函数:math模块
数学常数
圆周率π、自然对数的底e等
数学函数
三角函数、对数、最大公约数、最小公倍数等,可以通过dir查看
>>> import math
>>> dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin',
'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e',
'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum',
'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp',
'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians',
'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
12、数据的基本类型:逻辑值
配合 if/while 等语句做条件判断
逻辑运算:and / or / not, 优先级:not > and > or
0、空字符串,空序列,None都是False
非0、非空字符串,非空序列都是True
13、数据的基本类型:字符串
成对的双引号或单引号括起来的文字的字符,多行用三个单引号包起来
转义符号 “\”
字符串有序列号,第一个为0,第二个为1;也可以倒着来,最后一个字符编号为-1,倒数第二个为-2,如下图:
H | E | L | L | O | , | W | O | R | L | D |
---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
-11 | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
常见字符串操作
获取字符串的长度:函数 len()
切片操作:s[start : end : step], start:起始位置;end:结束位置,不包括end;step:步长
>>> s = '01234567'
>>> s[3:8:2]
'357'
+ : 将两个字符串连接起来,得到新字符串
* : 将字符串重复若干次,生成新的字符串
>>> a = '123'
>>> b = 'abc'
>>> a + b
'123abc'
>>> a*3
'123123123'
判断字符串内容是否相同
判断字符串中是否包含某个字符串
>>> a = 'hello'
>>> a == 'hello'
True
>>> 'h' in a
True
>>> 'H' in a
False
删除空格
str.strip: 去掉字符串前后的所有空格,内部空格不受影响
str.lstrip: 去掉字符串左边的所有空格
str.rstrip: 去掉字符串右边的所有空格
判断字母数字
str.isalpha: 判断字符串是否全部由字母构成
str.isdigit: 判断字符串是否全部由数字构成
str.isalnum:判断字符串是否仅包含字母和数字,而不含特殊字符
字符串的高级操作
split:分割
join: 合并
upper/lower/swapcase:大小写相关
ljust/center/rjust: 排版左中右对齐
replace: 替换字串
>>> 'You are my sunshine.'.split(' ')
['You', 'are', 'my', 'sunshine.']
>>> '-'.join(['one','for','two']) # 用 '-'连接要被 连接的序列元素
'one-for-two'
>>> 'abc'.upper()
'ABC'
>>> 'aBC'.lower()
'abc'
>>> 'Abc'.swapcase()
'aBC'
>>> 'Hello World!'.center(20)
' Hello World! '
>>> 'Tom smiled, Tom cried, Tom shouted'.replace('Tom', 'Jane')
'Jane smiled, Jane cried, Jane shouted'
14、变量和引用
给数据命名的规则:字母和数字组合而成,可以用下划线 “_”,字母区分大小写,不能用特殊字符,如空格,标点,运算符等,名字的第一个字符必须是字母,不能是数字
赋值:
”==“是对数值的相等性进行判断
”=“ 是计算右边式子的值,赋值给等号左边的变量。 ==>请大家好好理解这句话,请看下面例子
>>> a,b = 1,2 # 这个大家好理解,就是分别给a和b赋值1,2
>>> a
1
>>> b
2
>>> a, b = b, a+b # 这个会得出什么结果呢,我们看看
>>> a
2
>>> b
3
大家能看明白了么?其中过程是先计算 ”=“号右边的表达式,把b和a+b的值都计算出来,再给” = “左边的对应的变量名赋值。这里是初学者容易犯错的地方
15、上机练习:基本数据类型
一、数值基本运算:33和7 +, -, *, /, //, %, ** hex(), oct(), bin()
>>> 33+7
40
>>> 33//7
4
>>> 33%7
5
>>> hex(33)
'0x21'
>>> oct(7)
'0o7'
>>> bin(33)
'0b100001'
二、类型转换 1,0,‘abc’, None, 1.2, False, ‘’
str(), bool(), int(), float() is None, ==, !=
>>> str(1)
'1'
>>> bool(0)
False
>>> int(1.2)
1
>>> float(0)
0.0
>>> str(False)
'False'
>>> bool(None)
False
>>> None is None
True
>>> 'abc' == False
False
>>> 1.2 != 1
True
三、字符串基本操作 +, *, len(), [], in ,ord(), chr() 含有中文的字符串
>>> len('abc')
3
>>> 'abc'+'def'
'abcdef'
>>> 'abc'*3
'abcabcabc'
>>> 'ab' in 'abc'
True
>>> ord('a') # 把字符转换成ascii码
97
>>> chr(33) # 把ascii码转换成字符
'!'
>>> len('你好')
2
四、字符串的高级操作
s=‘abcdefg12345’ 切片:获得defg12,获得fg12345,获得54321, 获得aceg2
>>> s='abcdefg12345'
>>> s[3:9]
'defg12'
>>> s[5:]
'fg12345'
>>> s[11:6:-1]
'54321'
>>> s[:10:2]
'aceg2'
t=‘Mike and Tom’
split拆分
upper/lower/swapcase修改大小写
ljust/center/rjust排版30位宽度左中右对齐
replace将Mike替换为Jerry
>>> t = 'Mike and Tom'
>>> t.split(' ')
['Mike', 'and', 'Tom']
>>> t.upper()
'MIKE AND TOM'
>>> t.lower()
'mike and tom'
>>> t.swapcase()
'mIKE AND tOM'
>>> t.ljust(30)
'Mike and Tom '
>>> t.rjust(30)
' Mike and Tom'
>>> t.center(30)
' Mike and Tom '
>>> t.replace('Mike','Jerry')
'Jerry and Tom'
测验题
1、关于Python中的字符串,下列说法错误的是()。
A. 既可以用单引号,也可以用双引号创建字符串。
B. 在三引号字符串中可以包含换行回车等特殊字符。
C. 字符应该视为长度为1的字符串。
D. 字符串以\0标志字符串的结束。
2、关于python中的复数,下列说法错误的是()。
A. 表示复数的语法是real+image j。
B. 复数之间只能比较是否相等。
C. 虚部必须后缀j且j不区分大小写。
D. 实部和虚部都是整数。
3、下列表达式中返回为True的是()。
A. (3,2)>(‘a’,’b’)
B. 0x56>56
C. 3>2>2
D. ’abc’>’xyz’
4、print(‘a’<‘b’<‘c’),上述代码的输出结果是()。
A. True
B. False
C. a
D. c
5、代码的输出结果是()。
x="big"
y=2
print(x+y)
A. big
B. bigbig
C. 会报错
D. big2
6、代码的输出结果是____。
x="big"
y=2
print(x*y)
7、代码的输出结果是____。
x="big"
y="name"
print(x+y)
8、w的输出是____。
name="Mike"
w = name.upper()
9、u的输出是____。
name="Mike"
u = name[-2:]
10、x的输出是____。
name="Mike"
x = name.replace("k","p")
Answer :
1、D
2、D
3、B
4、A
5、C
6、bigbig
7、bigname
8、MIKE
9、ke
10、Mipe