Python · Day 05

for、range
与乘法表生成器

第五天,我学习了另一种循环。与依靠条件继续运行的 while 不同,for 更适合已经知道要重复多少次的任务。

从 1 输出到 5

我先使用 forrange(1, 6),让变量 number 自动依次取得 1、2、3、4、5,不再需要自己写加一。

day5.py
for number in range(1, 6):
    print(number)

print("循环结束")

range(开始, 停止) 包含开始数字,但不包含停止数字。因此写到 6,实际只输出到 5。

加入步长,反方向倒计时

range() 还可以接收第三个数字,表示每次变化多少。使用 -1 后,数字每轮减少一。

day5.py
for number in range(5, 0, -1):
    print(number)

print("倒计时结束")

range(5, 0, -1) 表示从 5 开始、在 0 之前停止、每次减少一,所以产生 5、4、3、2、1。

乘法表生成器

最后,我输入一个数字,让循环中的乘数从 1 变化到 9。每一轮重新计算结果并输出,因此不需要手写九次乘法。

table.py
number = int(input("你想查看哪个数字的乘法表:"))

for multiplier in range(1, 10):
    result = number * multiplier
    print(number, "*", multiplier, "=", result)

print("乘法表生成完毕")

输入 3 后,程序正确输出了从 3 * 1 = 33 * 9 = 27 的全部结果。

变量名也在表达含义

最初我使用了简短变量名 a,程序能够运行。不过把它写成 multiplier,以后再阅读代码时更容易知道它代表“乘数”。

逗号后留空格不会改变运行结果,但能提高可读性。代码不仅要让电脑执行,也要让人容易看懂。

今天真正弄懂了什么

  • for 适合次数已经确定的循环
  • range(开始, 停止) 包含开始、不包含停止
  • range(开始, 停止, 步长) 可以控制每轮的变化
  • 负数步长可以让数字倒序变化
  • for 会自动取得下一个值,不需要手动加一或减一
  • 循环可以把重复九次的乘法压缩成几行代码
  • 清楚的变量名和适当空格能让代码更容易阅读

今天学到的不只是另一种循环,而是开始识别规律:找出每一轮不变的部分和不断变化的部分,再把变化交给程序。