变量、条件与循环
- 区分字符串、整数与列表
- 逐行推演条件和循环处理虚构数据
为什么需要控制流程
晨光书架想把三本虚构书的阅读时长分类。逐本写很多显示语句虽然可行,但数量一变就要改多处代码。变量保存当前数据,列表把同类项放在一个序列中,条件决定某种情况下做什么,循环则让同一处理重复用于多项数据。这里不必把术语背成定义,可以想成拿出一个数字,判断它是否达到十分钟,再把结果记下来。程序只是按明示规则做分类,不会理解阅读感受,也不等于训练了AI模型。
类型决定哪些操作有意义
字符串是文本,例如书名;整数是没有小数部分的数字;列表用方括号保存有顺序的多项值。数字十和文本十并不是同一种类型,前者可以参与数值比较,后者首先是一段字符。不要以为引号只是装饰,它会改变数据含义。变量名应让人知道用途,例如minutes比随意的x更适合这个例子。比较是否达到门槛使用大于等于符号,赋值则使用单个等号;混淆两者会造成语法错误或错误逻辑。
完整分类示例
minutes_list = [5, 12, 8]
for minutes in minutes_list:
if minutes >= 10:
label = "较长"
else:
label = "较短"
print(minutes, label)- 第一行建立含五、十二、八三个整数的列表,表示三条虚构阅读记录。
- 第二行开始循环,每次从列表取一项并命名为minutes,末尾冒号引出代码块。
- 第三行判断当前值是否至少为十,缩进表示它属于循环。
- 第四行在条件成立时把标签设为较长。
- 第五行表示条件不成立时走另一个分支。
- 第六行在另一分支把标签设为较短。
- 第七行显示当前分钟数和标签,它属于循环但位于条件分支之外。
预期输出分别是五较短、十二较长、八较短。十本身也属于较长,因为规则包含等于十。这里的长短只是教学定义,不是对阅读价值的评价。
缩进为何不能随意改
Python用缩进表达代码块边界。第七行与if同层,表示无论哪个分支都显示;若它缩进到第四行同层,就可能只在较长时显示。建议统一使用四个空格,不混用空格与制表符。手工推演时每次循环重新检查当前minutes值,记录进入哪条分支;不要把上一次标签误认为永远不变。循环结束后输出已经显示过,但原列表仍是五、十二、八,当前示例没有修改它。
规则与数据边界
把列表改为十、零、十五,可以测试门槛、较小值与较大值。负分钟不符合本任务含义,后续会学习输入校验,当前示例先只用非负整数。代码运行正确也可能是规则定义不合适,例如把十分钟叫精读就过度解释了数值。应先约定分类规则,再判断程序是否遵守它。理解条件、循环与类型,是以后阅读数据处理和AI应用代码的基础,但并不要求你立刻建立自动代理或连接服务。
本节要点
- 引号会区分文本与数值
- 条件决定分支,循环重复处理
- 缩进属于Python语法,边界值需要测试
动手练习:推演门槛值与缩进
- 将列表改成十、零、十五,并记录每次循环的当前值
- 按大于等于十的规则预测标签
- 说明print如果移入较长分支,会漏掉哪项输出
自查清单
- 门槛十分类正确
- 能解释缩进改变输出范围
先自己做,再查看参考答案
列表为十、零、十五时,输出标签依次是较长、较短、较长。十满足大于等于十,不能因恰好在门槛上就归入较短;零不满足,因此走else分支。若把print缩进到label等于较长所在分支内部,零这一项不会被显示,因为它走另一个分支。当前代码的print与if同层,因此三个数据都会输出。列表保存的是整数,没有引号;如果写成文本十,不能直接当成相同的数值比较。本练习只测试约定规则,不意味着时长较长就阅读效果更好,程序给出的标签含义由任务定义决定。