数据类型转换和运算符
1 输入 input
-
输⼊功能的语法
-
输⼊input的特点
所谓输入功能:
在Python中,程序接收⽤户输⼊的数据的功能即是输⼊。
1.1 输⼊的语法
input("提示信息")
# input 后面小括号中是给用户的提示信息
1.2 输⼊的特点
- 当程序执⾏到 input ,等待⽤户输⼊,输⼊完成之后才继续向下执⾏。
- 在 Python 中, input 接收⽤户输⼊后,⼀般存储到变量,⽅便使⽤。
- 在 Python 中, input 会把接收到的任意⽤户输⼊的数据都当做字符串处理。
在下面的代码演示中,我将操作两件事:
-
通过编写代码来了解 input
input("提示信息")
-
input 的特点
- 遇到 input 等待用户输入
- 接收 input 存变量
- input 接收到的数据类型都是字符串
从上图可以看到当我们在代码中编写了 input 之后就并执行该程序就会发现该程序会卡住并且等待用户输入
当我们在接收 input 数据的时候一般将接收的数据存入到变量中
'''
1.书写 input
input("提示信息")
2.观察特点
2.1 遇到 input 等待用户输入
2.2 接收 input 存变量
2.3 input 接收到的数据类型都是字符串
'''
# 这里直接将用户输入的数据存放到了 password 变量中
password = input("请输入密码:")
print(f"密码是{password}")
# 通过 type 函数来验证 input 接收到的数据类型都是字符串
print(type(password))
输出:
root@go:~/py# /bin/python3 /root/py/test.py
请输入密码:1234
密码是1234
<class 'str'>
由此可以看出在 python 中通过 input 的方式将数据存放到我们指定的变量中,在后续的代码中可以接着使用
并且通过上面的代码输入可以看到 input 会将接收的数据类型转变为 string 类型
1.3 总结
-
输⼊功能
input('提示⽂字')
-
输⼊的特点
- ⼀般将
input
接收的数据存储到变量 input
接收的任何数据默认都是字符串数据类型
- ⼀般将
2 转换数据类型
- 数据类型转换的必要性
- 数据类型转换常⽤⽅法
2.1 转换数据类型的作⽤
问:input()接收⽤户输⼊的数据都是字符串类型,如果⽤户输⼊1,想得到整型该如何操作?
答:转换数据类型即可,即将字符串类型转换成整型。
2.2 转换数据类型的函数
下面表格中高亮部分则为相对重要的内容
下面代码中将 str 转换为 int 类型
'''
1.input
2.检测 input 数据类型是否为 str
3.通过 int() 将 str 转换数据类型
4.检测是否转换成功
'''
# input 是将所有接收的数据都转换为 str 类型
num = input("请输入数字:")
print(num,"数据类型:" ,type(num))
# 通过 int() 函数强制转换 num 数据类型
print('转换后的数据类型',type(int(num)))
输出
root@go:~/py# /bin/python3 /root/py/test.py
请输入数字:123
123 数据类型: <class 'str'>
转换后的数据类型 <class 'int'>
2.3 实验不同的数据类型转换
# 准备变量
num1 = 1
str1 = '10'
list1 = [1,2,3] # 字典
t1 = (1,2,3) # 元组
# 1. float() -- 转换成浮点型
print("float()",float(num1),type(float(num1))) # 1.0
print("float()",float(str1),type(float(str1))) # 10.0
# 2. str() -- 转换成字符串类型
print("str()",int(num1),type(str(num1)))
# 3. tuple() -- 将⼀个字典转换成元组
print("tuple()",tuple(list1),type(tuple(list1)))
# 4. list() -- 将⼀个元组转换成字典
print("list()",list(t1),type(list(t1)))
# 5. eval() -- 计算在字符串中有效的 python 表达式,并返回一个对象
# 如果字符串里放了整数 1 ,那通过 eval 就可以将其把 str 转为 int
# 如果字符串里面是 1.1 ,那么通过 eval 就转为 float 类型
# 如果字符串是 (1,2,3) 元组,那么通过 eval 就可以转为 tuple 类型
# 如果字符串里是 [1,2,3] 字典,那么通过 eval 就可以转为 list 类型
# eval 的作用就是将字符串的数据转换为他原本的类型
str2 ='1'
str3='1.1'
str4='(1,2,3)'
str5='[1,2,3]'
print("eval",eval(str2),type(eval(str2)))
print("eval",eval(str3),type(eval(str3)))
print("eval",eval(str4),type(eval(str4)))
print("eval",eval(str5),type(eval(str5)))
输出:
root@go:~/py# /bin/python3 /root/py/test.py
float() 1.0 <class 'float'>
float() 10.0 <class 'float'>
str() 1 <class 'str'>
tuple() (1, 2, 3) <class 'tuple'>
list() [1, 2, 3] <class 'list'>
eval 1 <class 'int'>
eval 1.1 <class 'float'>
eval (1, 2, 3) <class 'tuple'>
eval [1, 2, 3] <class 'list'>
2.4 总结
- 转换数据类型常⽤的函数
- int()
- float()
- str()
- list()
- tuple()
- eval()
3 运算符
3.1 运算符的分类
在 python 中有以下几类运算符
- 算数运算符
- 赋值运算符
- 复合赋值运算符
- ⽐较运算符
- 逻辑运算符
3.2 算数运算符
注意:
- 混合运算优先级顺序:
()
⾼于**
⾼于* / // %
⾼于+ -
# 混合运算, ** 优先级高于 * 所以等于 2*8
print(2 * 2 ** 3) # 16
# 混合运算, ()优先级高于 ** 所以等于 4**3 = 64
print((2 * 2) ** 3) # 64
3.3 赋值运算符
-
单个变量赋值
num=1 print(num)
-
多个变量赋值,之间需要通过逗号隔开
,
并且=
两边个数相同num1 , float1 , str1 = 1,1.0,"hello" print(num1,float1,str1) # 1 1.0 hello
-
多变量赋相同值
a = b = 10 # 将 a b 两个变量赋值为 10 print(a,b) # 10 10
3.4 复合赋值运算符
所谓复合赋值运算符如下:
将算术运算符执行后的结果在等号赋值到左边这个变量中
代码如下:
a = 10
a += 1 # a = a + 1 = 10 + 1 = 11
print(a)
b = 10
b -= 1 # b = b - 1 = 10 - 1 = 9
print(b)
c = 10
# 输出13, 先算运算符右侧1 + 2 = 3, c += 3 , 推导出c = 10 + 3
c += 1 + 2 # c = c + 3 = 10 + 3 = 13
print(c)
# 通过 *= 就知道是否符合上面我的判断,如果是 d *= 1 + 2 = 30
d = 10
d *= 1 + 2
print(d)
输出:
root@go:~/py# /bin/python3 /root/py/test.py
11
9
13
30 # 由此可见先算运算符右侧1 + 2 = 3
3.5 ⽐较运算符
⽐较运算符也叫关系运算符, 通常⽤来判断,以 bool 数据类型为默认类型
![image-20230131152037009](2 数据类型转换和运算符.assets/image-20230131152037009.png)
a = 7
b = 5
print(a == b) # False
print(a != b) # True
print(a < b) # False
print(a > b) # True
print(a <= b) # False
print(a >= b) # True
3.6 逻辑运算符
一般在工作中使用到逻辑运算符都是为了来扩充条件。就是在多个条件之间的判断需要逻辑运算
- and:与,两边为真时为真
- or:或,一边为真时结果为真,都假时为假
- not:非,取反
a = 1
b = 2
c = 3
print((a < b) and (b < c)) # True
print((a > b) and (b < c)) # False
print((a > b) or (b < c)) # True
print(not (a > b)) # True
3.6.1 拓展
数字之间的逻辑运算
a = 0
b = 1
c = 2
# and运算符,只要有⼀个值为0,则结果为0,否则结果为最后⼀个⾮0数字
print(a and b) # 0
print(b and a) # 0
print(a and c) # 0
print(c and a) # 0
print(b and c) # 2
print(c and b) # 1
# or运算符,只有所有值为0结果才为0,否则结果为第⼀个⾮0数字
print(a or b) # 1
print(a or c) # 2
print(b or c) # 1
4 总结
-
算数运算的优先级
- 混合运算优先级顺序:
()
⾼于**
⾼于*
/
//
%
⾼于+
-
- 混合运算优先级顺序:
-
赋值运算符
- =
-
复合赋值运算符
- +=
- -=
- 优先级
- 先算复合赋值运算符右侧的表达式
- 再算复合赋值运算的算数运算
- 最后算赋值运算
-
⽐较运算符
- 判断相等: ==
- ⼤于等于: >=
- ⼩于等于:<=
- 不等于: !=
-
逻辑运算符
- 与: and
- 或:or
- ⾮:not