第一章 · Python 基础

数字与运算符

本节目标

学完这一节,你会知道:

  1. Python 里常见的数字类型:整数和浮点数
  2. 如何做加减乘除、整除、取余和幂运算
  3. 如何使用比较运算得到 TrueFalse
  4. 如何用 andornot 组合条件
  5. 如何写一个简单的四则运算计算器

这一节看起来符号很多,但不用死记。先把常用的 + - * / // % ** 练熟。

先跑一个例子

新建文件 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

常见简写:

  • +=
  • -=
  • *=
  • /=
  • //=
  • %=

比较运算符

比较运算的结果是布尔值:TrueFalse

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 会得到 TrueFalse,再放进 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} 元")

然后继续改:

  1. 增加一种商品
  2. 判断总价是否超过 50 元
  3. 如果商品数量是偶数,输出 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} 元")

小结

这一节你学会了:

  1. int 表示整数,float 表示小数
  2. + - * / // % ** 可以完成常见数学计算
  3. ==!=>< 等比较会得到布尔值
  4. andornot 可以组合条件
  5. 不确定优先级时,用括号让代码更清楚

下一节我们会学习输入与输出。你会让程序读取用户输入,并把计算结果更漂亮地显示出来。

能算账的 Python,已经有点工具味了

加减乘除不难,真正有用的是把计算放进生活场景里:购物、时间、折扣、成绩。马哥建议你多试试整除和取余,它们看着低调,后面写循环和判断时经常突然冒出来帮忙。

讨论 (0)

还没有评论,来抢沙发吧!