数字与运算符
本节目标
学完这一节,你会知道:
- Python 里常见的数字类型:整数和浮点数
- 如何做加减乘除、整除、取余和幂运算
- 如何使用比较运算得到
True或False - 如何用
and、or、not组合条件 - 如何写一个简单的四则运算计算器
这一节看起来符号很多,但不用死记。先把常用的 + - * / // % ** 练熟。
先跑一个例子
新建文件 calculator_demo.py,写入:
price = 9.9
count = 3
money = 50
total = price * count
change = money - total
print(f"商品单价:{price} 元")
print(f"购买数量:{count}")
print(f"总价:{total:.2f} 元")
print(f"找零:{change:.2f} 元")
print(f"钱够吗:{money >= total}")
运行:
python3 calculator_demo.py
你会看到:
商品单价:9.9 元
购买数量:3
总价:29.70 元
找零:20.30 元
钱够吗:True
这里既有数学计算,也有比较结果。
数字类型回顾
Python 常用数字类型有两种:
age = 18 # int,整数
price = 9.9 # float,浮点数
整数适合表示年龄、数量、次数。
浮点数适合表示价格、身高、温度这类带小数的数据。
算术运算符
x = 10
y = 3
print(x + y)
print(x - y)
print(x * y)
print(x / y)
print(x // y)
print(x % y)
print(x ** y)
输出:
13
7
30
3.3333333333333335
3
1
1000
这些符号的意思是:
+:加法-:减法*:乘法/:除法,结果通常是浮点数//:整除,只要商的整数部分%:取余数**:幂运算
整除和取余
// 和 % 经常一起出现。
minutes = 135
hours = minutes // 60
left_minutes = minutes % 60
print(f"{minutes} 分钟是 {hours} 小时 {left_minutes} 分钟")
输出:
135 分钟是 2 小时 15 分钟
取余也常用来判断奇偶数:
number = 7
print(number % 2 == 0)
如果结果是 True,说明是偶数;如果是 False,说明是奇数。
赋值运算符
如果要在原来的值上修改,可以用简写:
score = 80
score += 5
print(score)
score -= 10
print(score)
score *= 2
print(score)
score += 5 等价于:
score = score + 5
常见简写:
+=-=*=/=//=%=
比较运算符
比较运算的结果是布尔值:True 或 False。
a = 5
b = 10
print(a == b)
print(a != b)
print(a < b)
print(a > b)
print(a <= 5)
print(b >= 10)
输出:
False
True
True
False
True
True
注意:判断相等用 ==,不是 =。
age = 20
print(18 <= age <= 60)
Python 支持链式比较,这行意思是:年龄是否在 18 到 60 之间。
逻辑运算符
逻辑运算符用来组合多个条件。
age = 20
has_ticket = True
print(age >= 18 and has_ticket)
print(age < 18 or has_ticket)
print(not has_ticket)
含义:
and:两边都为真,结果才是真or:至少一边为真,结果就是真not:取反
例子:
username = "mage"
password = "123456"
print(username == "mage" and password == "123456")
成员运算符
in 可以判断某个内容是否在一组数据里。
fruits = ["苹果", "香蕉", "橙子"]
print("苹果" in fruits)
print("葡萄" not in fruits)
字符串也可以用:
text = "Hello, Python"
print("Python" in text)
运算符优先级
Python 会先算乘除,再算加减:
print(2 + 3 * 4)
print((2 + 3) * 4)
输出:
14
20
如果你不确定优先级,就用括号。括号不仅能改变顺序,也能让代码更容易读。
逐行拆解
再看开头的例子:
total = price * count
这一行计算总价。
change = money - total
这一行计算找零。
print(f"钱够吗:{money >= total}")
money >= total 会得到 True 或 False,再放进 f-string 输出。
自己改一改
把 calculator_demo.py 改成:
apple_price = 3.5
apple_count = 4
banana_price = 2.8
banana_count = 6
total = apple_price * apple_count + banana_price * banana_count
print(f"苹果总价:{apple_price * apple_count:.2f} 元")
print(f"香蕉总价:{banana_price * banana_count:.2f} 元")
print(f"合计:{total:.2f} 元")
然后继续改:
- 增加一种商品
- 判断总价是否超过 50 元
- 如果商品数量是偶数,输出
True
常见错误
1. 判断相等时写成 =
错误写法:
age = 18
print(age = 18)
正确写法:
print(age == 18)
= 是赋值,== 才是比较是否相等。
2. 除以 0
print(10 / 0)
这会报 ZeroDivisionError。除法前要确认除数不是 0。
3. 字符串数字没有转换
age = "18"
print(age + 1)
正确写法:
age = int("18")
print(age + 1)
4. 浮点数精度问题
print(0.1 + 0.2)
你可能会看到:
0.30000000000000004
这是计算机保存小数的方式导致的。显示价格时可以先用 f-string 控制小数位:
print(f"{0.1 + 0.2:.2f}")
小练习
练习 1:分钟转换
创建变量:
minutes = 185
输出它等于多少小时多少分钟。
练习 2:判断偶数
创建变量 number,判断它是不是偶数。
要求输出类似:
8 是偶数吗:True
练习 3:简单折扣
商品原价 price = 120,折扣 discount = 0.8,计算折后价,并保留两位小数输出。
参考答案
练习 1:
minutes = 185
hours = minutes // 60
left = minutes % 60
print(f"{minutes} 分钟 = {hours} 小时 {left} 分钟")
练习 2:
number = 8
is_even = number % 2 == 0
print(f"{number} 是偶数吗:{is_even}")
练习 3:
price = 120
discount = 0.8
final_price = price * discount
print(f"折后价:{final_price:.2f} 元")
小结
这一节你学会了:
int表示整数,float表示小数+ - * / // % **可以完成常见数学计算==、!=、>、<等比较会得到布尔值and、or、not可以组合条件- 不确定优先级时,用括号让代码更清楚
下一节我们会学习输入与输出。你会让程序读取用户输入,并把计算结果更漂亮地显示出来。
能算账的 Python,已经有点工具味了
加减乘除不难,真正有用的是把计算放进生活场景里:购物、时间、折扣、成绩。马哥建议你多试试整除和取余,它们看着低调,后面写循环和判断时经常突然冒出来帮忙。
还没有评论,来抢沙发吧!