目录
01-整数的表示方式
# Python里的数据类型:
# 整型(int) 浮点型(float) 复数(complex)
# 字符串(str) 布尔(bool) 列表(list) 元组(tuple) 字典(dict) 集合(set)
# 整型就是整数。计算机其实只能保存二进制 0 和 1,为了方便数据的表示,同时计算机也支持八进制和十六进制
# 二进制 八进制 十六进制 十进制 在Python里都能够表示
a = 98 # 默认数字都是十进制的数字。 98 就是十进制的九十八
b = 0b101101101 # 以 0b 开头的数字是二进制
print(b) # 当使用print语句打印一个数字的时候,默认也是使用十进制打印输出的
# c = 0b121010102 二进制里最大的个位数是1,不能出现2
c = 0o34 # 以 0o开头的数字是八进制的数字
print(c) # 28
# x = 0o79 八进制里最大的个位数是7
# 十六进制 0~9 a~f
d = 0x2a # 以 0x开头的数字是十六进制
print(d) # 42
# Python里的数据类型: # 整型(int) 浮点型(float) 复数(complex) # 字符串(str) 布尔(bool) 列表(list) 元组(tuple) 字典(dict) 集合(set)
02-进制转换+03-代码实现
a = 12 # 十进制的数字12
print(bin(a)) # 0b1100 使用bin内置函数可以将数字转换成为二进制
print(oct(a)) # 0o14 使用oct内置函数可以将数字转换成为八进制
print(hex(12)) # 0xc 使用hex内置函数可以将数字转换成为十六进制
#下面是把其他进制变成10进制
x = '1a2c'
y = int(x, 16) # 把字符串 1a2c 当做十六进制转换成为整数
print(y) # 6700 打印一个数字,默认使用十进制输出
print(bin(y))
m = '12'
n = int(m, 8) # 把字符串的 12 当做八进制转换成为整数
print(n) # 10
04-数据类型转换
# 进制转换 将 int 类型以不同的进制表现出来
# 类型转换 将一个类型的数据转换为其他类型的数据
# int ==> str str ==> int bool ==> int int ==> float
age = input('请输入您的年龄:')
# 原因: input 接收到的用户输入,都是 str字符串类型
# 在Python里,如果字符串和数字做加法运算,会直接报错
# 把字符串类型的变量 age 转换成为数字类型的 age
# print(age + 1) 错误
# print(type(age)) # <class 'str'>
# 使用 int 内置类可以将其他类型的数据转换成为整数
new_age = int(age)
# print(type(new_age)) <class 'int'>
print(new_age + 1)
# 为什么要转换数据类型:因为不同的数据类型,进行运算时,它的运算规则不一样。
05-转换成为整数
# 使用 int 内置类可以将数据转换成为整数
a = '31'
b = int(a)
print(a) # 31
print(b) # 31
# print(a + 1) # 报错
print(b + 1) # 32
# 如果字符串不是一个合法的数字,会直接报错
# x = 'hello'
# y = int(x)
# print(y)
x = '1a2c'
y = int(x, 16) # 把字符串 1a2c 当做十六进制转换成为整数
print(y) # 6700 打印一个数字,默认使用十进制输出
print(bin(y))
m = '12'
n = int(m, 8) # 把字符串的 12 当做八进制转换成为整数
print(n) # 10
06-转换为浮点数
a = '12.34'
# 使用内置 float 类可以将其他类型数据转换成为 float浮点数
b = float(a)
print(b + 1)
# 如果字符串不能被转换成为有效的浮点数,会报错
# c = float('hello')
# print(c)
c = 101
print(float(c)) # 101.0
m = float('12') # 将字符串转换成为浮点数
n = float(12) # 将整型数字转换成为浮点数
print(m, n)
07-转换为字符串
# 使用 str 内置类可以将其他类型的数据转换成为字符串
a = 34
b = str(a)
print(a + 1) # 35
# print(b + 1)
print(a) # 34
print(b) # 34
print(type(a)) # <class 'int'>
print(type(b)) # <class 'str'>
08-转换成为布尔类型
# 使用 bool内置类可以将其他数据类型转换成为布尔值
print(bool(100)) # 将数字100转换成为布尔值
print(bool(-1)) # -1转换成为布尔值也是True
print(bool(0)) # False
# 数字里,只有数字 0 被转换成为布尔值是False,其他数字转换成为布尔值都是True
print(bool('hello')) # True
print(bool('False')) # True
print(bool('')) # False
print(bool("")) # False
# 字符串里,只有空字符串 '' / "" 可以转换成为False,其他字符串都转换成为True
# None 转换成为布尔值是 False
print(bool(None)) # False
print(bool("None")) # True
print(bool([])) # False
print(bool(())) # False
print(bool({})) # False
print(bool())
# {'name': 'zhangsan', 'age': 18}
# {1,2,3,4}
# {} # 空字典
s = set() # 空集合
print(bool(s))
# 数字0,空字符串 ''/"",空列表[],空元组(),空字典{},空集合set(),空数据None会被转换成为False
# 在计算机里,True和False其实就是使用数字 1 和 0 来保存的
print(True + 1) # 2
print(False + 1) # 1
# 隐式类型转换
if 0:
print('good')
09-算数运算符
# Python里支持很多算数运算符
# +加 -减 *乘 /除 **幂运算 // 整除 %取余(取模)运算
print(1 + 1) # 2
print(4 - 2) # 2
print(3 * 2) # 6
# 在Python3里,两个整数相除,得到的结果会是一个浮点数
print(6 / 2) # 3.0
print(9 / 2) # 4.5
print(3 ** 3) # 27
print(81 ** (1 / 2)) # 9.0
print(10 / 3) # 3.333333333333333
print(10 // 3) # 3 整除
print(-5 // 2) # -2.5 ==> -3 争取,向下取整
print(10 % 3) # 1 取余,只取余数部分
print(1928 % 9876)
# +加 -减 *乘 /除 **幂运算 // 整除 %取余(取模)运算
10-算数运算符在字符串中的使用
# 字符串里有限度的支持加法和乘法运算符
# 加法运算符:只能用于两个字符串类型的数据,用来拼接两个字符串
print('hello' + 'world') # 将多个字符串拼接为一个字符串
# print('18' + 1) # # 在Python里,数字和字符串之间,不能做加法运算
# 乘法运算符:可以用于数字和字符串之间,用来将一个字符串重复多次
print('hello' * 2) # hellohello
# print('hello' - 'yes')
# print('hello' * 'god')
11-赋值运算符
# = 等号在计算机编程里,我们称之为赋值运算符,和数学里的等号有一定的区别
# 数学
# 1 + 1 = 2
# 4 = 4
# 计算机编程里,等号(赋值运算符)作用是将等号右边的值赋值给等号的左边
# 等号的左边一定不能是常量或者表达式
a = 4
# 10 = x
# 3 + 3 = m
m = 3 + 3
x = 1
# x = x + 2
# 复合赋值运算符
x += 2
print(x) # 3
x -= 1
print(x) # 2
x *= 3
print(x) # 6
x /= 2
print(x) # 3.0
x **= 5
print(x) # 243.0
x //= 2
print(x) # 121.0
x %= 2 # x = x % 2
print(x) # 1.0
12-赋值运算符的特殊场景
# 等号连接的变量可以传递赋值
a = b = c = d = 'hello'
print(a, b, c, d)
# x = 'yes' = y = z
m, n = 3, 5 # 拆包
print(m, n)
x = 'hello', 'good', 'yes'
print(x) # ('hello', 'good', 'yes')
# 拆包时,变量的个数和值的个数不一致,会报错
# y, z = 1, 2, 3, 4, 5
# print(y, z)
# o, p, q = 4, 2
# print(o, p, q)
# * 表示可变长度
# o, *p, q = 1, 2, 3, 4, 5, 6
# print(o, p, q) # 1 [2, 3, 4, 5] 6
# *o, p, q = 1, 2, 3, 4, 5, 6
# print(o, p, q) # [1, 2, 3, 4] 5 6
o, p, *q = 1, 2, 3, 4, 5, 6
print(o, p, q) # 1 2 [3, 4, 5, 6]
13-比较运算符
# 大于 > 小于 < 大于等于 >= 小于等于 <= 不等于 != / <> 等等与 ==
print(2 > 1) # True
print(2 < 4) # True
print(4 >= 3) # True
print(4 <= 9) # True
print(5 != 6) # True
print('hello' == 'hello') # True
# 比较运算符在字符串里的使用
# 字符串之间使用比较运算符,会根据各个字符的编码值逐一进行比较
# ASCII码表
print('a' > 'b') # False 97 > 98
print('abc' > 'b') # False 97 > 98
# 数字和字符串之间,做 == 运算的结果是False,做 != 结果是True,不支持其他的比较运算
# print('a' > 90)
print('a' == 90) # False
print('a' != 97) # True
# 大于 > 小于 < 大于等于 >= 小于等于 <= 不等于 != / <> 等等与 ==
14-逻辑运算符
# 逻辑运算符 逻辑与and 逻辑或or 逻辑非not
# 逻辑与规则:只要有一个运算数是False,结果就是False;只有所有的运算数都是True,结果才是True
print(2 > 1 and 5 > 3 and 10 > 2) # True
print(3 > 2 and 5 < 4 and 6 > 1) # False
# 逻辑或规则:只要有一个运算数是True,结果就是True;只有所有的运算数都是False,结果才是False
print(3 > 9 or 4 < 7 or 10 < 3) # True
print(3 > 5 or 4 < 2 or 8 < 7) # False
# 逻辑非运算:True ==> False False ==> True
print(not (5 > 2))
# 逻辑运算符 逻辑与and 逻辑或or 逻辑非not
15-逻辑运算的短路
# 逻辑与运算,只有所有的运算数都是True,结果才为True
# 只要有一个运算数是False,结果就是False
4 > 3 and print('hello world')
4 < 3 and print('你好世界') # 逻辑与运算的短路问题
# 逻辑或运算,只有所有的运算数都是False,结果才是False
# 只要有一个运算数是True,结果就是True
4 > 3 or print('哈哈哈')
4 < 3 or print('嘿嘿嘿')
# 逻辑运算的结果,一定是布尔值吗? 不一定
# 逻辑与运算做取值时,取第一个为False的值;如果所有的运算数都是True,取最后一个值
print(3 and 5 and 0 and 'hello') # 0
print('good' and 'yes' and 'ok' and 100) # 100
# 逻辑或运算做取值时,取第一个为True的值;如果所有的运算数都是False,取最后一个值
print(0 or [] or 'lisi' or 5 or 'ok') # lisi
print(0 or [] or {} or ()) # ()
16-位运算符(了解)
# 按位与& 按位或| 按位异或^ 按位左移<< 按位右移>> 按位取反~
a = 23
b = 15
print(a & b) 7
print(a | b) 31
print(a ^ b) 24
x = 5
print(x << 3) # a << n ==> a * 2的n次方
y = 15
print(y >> 2) # a >> n ==> a 除以 2的n次方
#这里的的运算全是二进制的,具体的运算规则如下:
23 :0001 0111
15 :0000 1111
7 :0000 0111 (按位与&
31 :0001 1111 ( 按位或|
24 :0001 1000 (按位异或^