二 用户交互与运算符
2.1 用户交互
人input输入,计算机print输出
2.1.1 输入input
-
程序执行input(),程序会停下来等待用户的输入,用户可以从键盘输入任何内容,输入的数据都会存为字符串类型
-
语法
input("请输入姓名:") # 程序遇到会立即停止,可以从控制台输入内容。回车后程序继续执行 # input("") 括号内部的文字,只是在你输入的位置前增加一个友好的提示,并无逻辑作用
# input 接收的数据一切皆为字符串
age = input("请输入一个年龄:")
print(age + 1) # 会报错,因为 str + int 字符串只能和字符串相加
- python支持将1个数据类型转换成另外一种数据类型
2.1.2 数据类型转换
4个数据类型: int float bool str 可以互相转换的
转换手法:使用 英文名+括号 将 待转数据 包囊起来
函数 | 方法说明 |
---|---|
int() | 将数据转换成整数 |
float() | 将数据转换成浮点数 |
bool() | 将对象转换成布尔类型 |
str() | 将对象转换成字符串 |
eval() | 用来计算在字符串中的有效python表达式,并返回一个对象 |
- 超市找零系统
# 执行程序要用户输入
商品单价
商品数量
付款金额
# 计算机应该输出该找零多少钱
price = float(input("请输入商品单价:"))
count = int(input("请输入商品数量:"))
money = float(input("请输入收款金额:"))
print(money - price * count)
其他类型转换的时候,规律
# float -》 int (截取小数部分,向下取整,只保留整数部分)
int(1.9) => 1
# int -> float
float(1) => 1.0
# bool -> int
True -> 1
False -> 0
# 其他类型转 -> bool
int 除了0是False,其余都是True
float 除了0.0是False,其余都是True
str 除了空字符串是False,其余都是True
# 编程中空字符串,不是说空格,空格也算一个空间
# s = '' # 空字符串
# print(bool(s))
# 其他类型转 -> str
# 什么都可以转字符串,降智,直接变成文本
# str -> 其他类型 (长得像目标)
int("1") => 1
bool("True") => True
eval 配合超市找零系统
price = eval(input("请输入商品单价:"))
count = eval(input("请输入商品数量:"))
money = eval(input("请输入收款金额:"))
print(money - price * count)
3.1.3 输出print
print('hello world') # 只输出一个值
a = 10
b = "哈哈"
c = "星星"
print(a,b,c)# 一次性输出多个值,值用逗号隔开
print的2个特别参数
sep:一次性输出多个值,print的分隔符
可以自行修改多个变量的分隔符
print(a,b,c,sep="~")
print(a,b,c,sep="@")
print(a,b,c,sep=" ")
print(a,b,c,sep="")
end:结束字符
默认end="\n"
print(6, end="") # 取消print自带的换行功能
print(6)
2.2 运算符
2.2.1 算术运算符
运算符 | 说明 | 实例 | 结果 |
---|---|---|---|
+ | 加 | 12.45 + 15 | 27.45 |
- | 减 | 4.56 - 0.26 | 4.3 |
* | 乘 | 5 * 3.6 | 18.0 |
/ | 除法(和数学中的规则一样) | 7 / 2 | 3.5 |
// | 整除(只保留商的整数部分) | 7 // 2 | 3 |
% | 取余,即返回除法的余数 | 7 % 2 | 1 |
** | 幂运算/次方运算,即返回 x 的 y 次方 | 2 ** 4 | 16,即 24 |
2.2.2 赋值运算符
运算符 | 说 明 | 用法举例 | 等价形式 |
---|---|---|---|
= | 赋值运算 | x = y | x = y |
+= | 加赋值 | x += y | x = x + y |
-= | 减赋值 | x -= y | x = x - y |
*= | 乘赋值 | x *= y | x = x * y |
/= | 除赋值 | x /= y | x = x / y |
%= | 取余数赋值 | x %= y | x = x % y |
**= | 幂赋值 | x **= y | x = x ** y |
//= | 取整数赋值 | x //= y | x = x // y |
age = 18
age += 1 # age = age + 1 # 基于自己本身增长1
age += 100 # age = age + 100
print(age)
age *=3 # age = age * 3
age /=3 # age = age / 3
age %=3 # age = age % 3
-
一些赋值手段
-
链式赋值
# a = 18 # b = a # c = b # # print(a,b,c) c = b = a = 18 print(a,b,c)
-
交叉赋值
x = 10 y = 20 # 问:如果想要将x和y两个变量中的值 进行交换 temp = x x = y y = temp print("x=",x) print("y=",y) # python也提供了 交叉赋值,可以直接做到交换 x,y = y,x # 也可以做到交换的效果
-
2.2.3 比较运算符
有比较就有命题,有命题就有真和假。 所以比较运算符 的结果 一定是 bool值
比较运算符 | 说明 |
---|---|
> | 大于,如果> 前面的值大于后面的值,则返回 True,否则返回 False。 |
< | 小于,如果< 前面的值小于后面的值,则返回 True,否则返回 False。 |
== | 等于,如果== 两边的值相等,则返回 True,否则返回 False。 |
>= | 大于等于(等价于数学中的 ≥),如果>= 前面的值大于或者等于后面的值,则返回 True,否则返回 False。 |
<= | 小于等于(等价于数学中的 ≤),如果<= 前面的值小于或者等于后面的值,则返回 True,否则返回 False。 |
!= | 不等于(等价于数学中的 ≠),如果!= 两边的值不相等,则返回 True,否则返回 False。 |
a = 100
b = 200
print(a>b)
print(a<b)
print(a==b) # 等于
print(a!=b) # 不等于
print(a>=b)
print(a<=b)
# 用户输入年龄,如果年龄 大于等于18,输出True,否则输出False
age = int(input("请输入年龄:"))
print(age>=18)
# 用户输入一个数,如果这个数是偶数 True,否则输出False
numb = int(input("请输入个整数:"))
print(numb % 2 == 0)
2.2.4 逻辑运算符
布尔值是可以计算的。 bool 逻辑运算符 bool
逻辑运算符 | 含义 | 基本格式 | 说明 |
---|---|---|---|
and | 逻辑与运算,等价于数学中的“且” | a and b | 当 a 和 b 两个表达式都为真时,a and b 的结果才为真,否则为假。 |
or | 逻辑或运算,等价于数学中的“或” | a or b | 当 a 和 b 两个表达式有一个为真时,a or b 的结果都为真,否则为假 |
not | 逻辑非运算,等价于数学中的“非” | not a | 如果 a 为真,那么 not a 的结果为假;如果 a 为假,那么 not a 的结果为真。相当于对 a 取反。 |
优先级:not>and > or
res = 3>4 and not 4>3 or 1==3 and 'x' == 'x' or 3>3
2.2.5 身份运算符
运算符 | 描述 | 实例 |
---|---|---|
is | is 是判断两个标识符是不是引用自一个对象 | x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False |
is not | is not 是判断两个标识符是不是引用自不同对象 | x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。 |
数据是存在内存中的。
两个值相同的数据,地址不一定是相同的。
a is b # 用于判断a和b是否是同一个来源的数据
2.2.6 运算符优先级
运算符说明 | Python运算符 | 优先级 | 结合性 |
---|---|---|---|
小括号 | ( ) | 19 | 无 |
乘方 | ** | 16 | 右 |
符号运算符 | +(正号)、-(负号) | 14 | 右 |
乘除 | *、/、//、% | 13 | 左 |
加减 | +、- | 12 | 左 |
比较运算符 | ==、!=、>、>=、<、<= | 7 | 左 |
is 运算符 | is、is not | 6 | 左 |
逻辑非 | not | 4 | 右 |
逻辑与 | and | 3 | 左 |
逻辑或 | or | 2 | 左 |
-
优先级总结
-
() > 算术运算符 > 比较运算符 > 逻辑运算符 (not > and > or)
-
括号是大哥
-
最终练习