第 3 章:判断与循环
程序真正的力量来自让计算机自己决定做什么(判断)和重复做事(循环)。 这一章是编程的分水岭,学完它你就有了写任何程序的基本能力。
3.1 如果:让程序做选择
最基础的结构是 如果:
python令 分数 = 85
如果 分数 >= 60:
打印("及格了!")
注意三个要点:
如果后面跟条件(一个结果为真或假的表达式)- 条件后面要有冒号
:(全角半角都行) - 冒号后换行并缩进,缩进里的内容只有在条件成立时才执行
多个分支用 否则如果 和 否则:
python令 分数 = 85
如果 分数 >= 90:
打印("优秀")
否则如果 分数 >= 60:
打印("及格")
否则:
打印("不及格")
否则如果是"上面的不成立,再看这个条件";否则是"全都不成立,就走这里"。 条件从上往下检查,只执行第一个成立的。
3.2 条件怎么写
比较运算(结果是真或假):
| 写法 | 意思 |
|---|---|
a == b | a 等于 b(注意是两个等号!) |
a != b | a 不等于 b |
a < b / a > b | 小于 / 大于 |
a <= b / a >= b | 小于等于 / 大于等于 |
一个等于号 = 是赋值,两个 == 才是比较——这是新手最常犯的错。
逻辑组合:与(and)、或(or)、非(not):
python令 年龄 = 20
如果 年龄 >= 18 与 年龄 < 60:
打印("成年人")
如果 年龄 < 12 或 年龄 > 80:
打印("需要特别照顾")
如果 非 年龄 >= 18:
打印("未成年人")
链式比较:像数学一样连着写,中间的值只算一次:
python令 分数 = 75
如果 60 < 分数 <= 90: # 等价于 分数 > 60 与 分数 <= 90
打印("良好")
真与假:真 和 假 是布尔值。空、0、空列表 []、空文本 "" 都算"假", 其他都算"真":
python令 清单 = []
如果 清单: # 空列表是假,不会进入
打印("清单有东西")
如果 长度(清单) == 0:
打印("清单是空的")
3.3 循环:重复做事
遍历:逐个处理
对列表里的每一项做同样的事,用 遍历:
python令 成绩 = [85, 92, 78, 60]
令 总分 = 0
遍历 分数 在 成绩:
总分 += 分数 # 等价于 总分 = 总分 + 分数
打印("平均分:", 总分 / 长度(成绩))
和 范围 配合,就能数数:
python遍历 数字 在 范围(1, 6):
打印(数字) # 输出 1 2 3 4 5
循环 N 次:不想管变量
只想要"重复做 N 次",用 循环 N 次:
python循环 3 次:
打印("你好")
当:条件满足就一直做
python令 i = 1
当 i <= 5:
打印(i)
i += 1
中断与继续:控制节奏
中断:立刻跳出循环继续:跳过本次,直接进入下一次
python遍历 数字 在 范围(1, 10):
如果 数字 == 5:
中断 # 到 5 就停
如果 数字 % 2 == 0:
继续 # 偶数跳过
打印(数字) # 输出 1 3
3.4 嵌套:判断套循环、循环套循环
这些东西可以任意组合。九九乘法表就是循环套循环:
python遍历 i 在 范围(1, 10):
令 行 = ""
遍历 j 在 范围(1, i + 1):
行 = 行 + 文本(j) + "x" + 文本(i) + "=" + 文本(i * j) + " "
打印(行)
3.5 综合实战:猜数字
把前面学的全用上:
python导入 随机 # 用标准库生成随机数
令 答案 = 随机.随机整数(1, 100)
令 猜中 = 假
循环 10 次:
令 猜测 = 整数(输入("猜一个 1 到 100 的数:"))
如果 猜测 < 答案:
打印("太小了,再猜")
否则如果 猜测 > 答案:
打印("太大了,再猜")
否则:
打印("猜对了!答案就是", 答案)
猜中 = 真
中断
如果 非 猜中:
打印("次数用完了,答案是", 答案)
导入 随机 让程序能生成随机数。随机.随机整数(1, 100) 生成 1 到 100 之间的随机整数。
3.6 试试看
- 输入一个年份,判断是不是闰年(能被 4 整除但不能被 100 整除,或者能被 400 整除)。
- 用
循环打印 1 到 100 里所有能被 3 整除的数。 - 让用户不断输入数字,输入 0 时停止,最后打印所有数的总和(提示:用
当或循环加中断)。 - 打印一个三角形:
*
**
***
****
*****
示例代码:
examples/tutorial/04_猜数字.jsh、examples/tutorial/05_九九乘法表.jsh
本章小结
如果 / 否则如果 / 否则做多分支判断,条件后要有冒号和缩进- 比较:
==(相等)、!=、<、>、<=、>=;组合:与、或、非 - 链式比较
60 < 分数 <= 90连着写 - 循环:
遍历 x 在 列表、循环 N 次、当 条件 中断跳出循环,继续跳过本次- 判断、循环可以嵌套,组合出强大逻辑