零基础学Python:Day6!循环语句:让程序自动重复干活
昨天我们学习了Python里非常重要的条件判断,让程序学会了做选择。今天我们继续往前走,学习另一个核心知识点——循环语句!有了循环,程序就能自动重复做一件事情,不用我们一行一行写重复代码啦,效率直接拉满~老规矩,先公布昨天的作业答案。
📋 昨日作业答案
1. 输入一个数字,判断它是奇数还是偶数
num = int(input("请输入一个数字: "))if num % 2 == 0:print(f"{num} 是偶数")else:print(f"{num} 是奇数")
运行测试:
请输入一个数字: 1010 是偶数
请输入一个数字: 77 是奇数
2. 成绩分等级,增加中等这一档
score = int(input("请输入你的成绩: "))if score >= 90:print("优秀")elif score >= 80:print("良好")elif score >= 70:print("中等")elif score >= 60:print("及格")else:print("不及格")
测试不同分数:
3. 猜数字小游戏
answer = 8guess = int(input("猜一个1-10之间的数字: "))if guess > answer:print("你猜大了")elif guess < answer:print("你猜小了")else:print("恭喜你猜对了!")
运行结果示例:
猜一个1-10之间的数字: 5你猜小了
猜一个1-10之间的数字: 10你猜大了
猜一个1-10之间的数字: 8恭喜你猜对了!
4. 多个if连写和if elif else有什么区别?
区别非常大哦!多个if连写,每个if都会独立判断,只要条件满足都会执行;而if elif else只要前面有一个条件满足了,后面所有条件都不会再判断了。
举个例子,如果score = 85:
多个if连写:
if score >= 60:print("及格")if score >= 80:print("良好")
结果会输出两行:及格和良好,因为两个if都独立判断,两个条件都满足了。
if elif写法:
if score >= 60:print("及格")elif score >= 80:print("良好")
结果只会输出一行:及格,因为第一个条件已经满足了,直接执行第一个代码块,后面的elif就不会再判断了。
所以一定要根据场景选择:如果只想匹配一个结果,就用if elif;如果多个条件都可能满足,都要执行,那就用多个if。
好啦,都对完答案了,我们开始今天的正题——循环语句,这是你写实用Python程序必须掌握的知识点,快来一起看看吧~
🤔 为什么需要循环?
想象一下,如果我们要输出1到100每个数字,没有循环的话,我们需要写100行print:
print(1)print(2)print(3)# ... 一直写到100
这也太麻烦了,而且非常笨,代码丑哭了。
有了循环,我们只需要几行代码就能搞定:
for i in range(1, 101):print(i)
直接一键输出1到100,是不是超级方便?
简单来说,循环就是让程序重复执行某一段代码,直到满足结束条件,帮我们省去写大量重复代码的麻烦,实际开发中循环用得非常非常多。
Python里主要有两种循环:
for循环:适合知道循环次数,或者遍历一个序列(比如列表、字符串)while循环:适合不知道循环次数,只知道结束条件的情况
我们一个个来看。
第一种循环:for循环,最常用的循环
for循环最常用的场景就是遍历一个序列,比如遍历字符串、列表,或者循环固定次数,基础语法结构是:
for 变量 in 序列: 循环执行的代码块
举个最简单的例子,遍历字符串"Python",把每个字符打印出来:
for char in "Python":print(char)
运行结果:
Python
是不是非常简单?它会依次把序列里每个元素拿出来,赋值给我们定义的变量,然后执行一次代码块,直到所有元素都遍历完就结束。
循环固定次数:range()函数的用法
如果我们需要循环固定次数,比如循环10次,一般会配合内置函数range()来用。
range()的常见用法:
range(n) → 生成从0到n-1的整数序列,一共n个数,循环n次
# 循环5次,输出0-4for i in range(5):print(i)
输出:0 1 2 3 4
range(start, end) → 生成从start到end-1的整数序列,刚好包含end - start个数
# 输出1-5,注意end是6,所以最后一个数是5for i in range(1, 6):print(i)
输出:1 2 3 4 5
range(start, end, step) → 还可以指定步长,每次跳step个数
# 输出1-10的奇数,步长是2for i in range(1, 11, 2):print(i)
输出:1 3 5 7 9
记住一个小技巧:range是左闭右开,左边包含,右边不包含,所以要得到从a到b的整数(包含b),end要写b+1,比如我们要输出1到100,就是range(1, 101),记住这个就不会错了。
举个实用例子:计算1-100的和
我们用for循环来算1到100所有数字的和,看看代码有多简洁:
total = 0for i in range(1, 101): total = total + iprint(f"1-100的和是: {total}")
运行结果:
1-100的和是: 5050
完美!就是高斯小时候那道题,我们用Python几行就算出来了,是不是很有成就感?
第二种循环:while循环,靠条件控制循环
说完for循环,我们再来看第二种循环while,它的语法更简单:
while 条件: 满足条件时重复执行的代码块
只要条件一直满足,循环就会一直执行下去,条件不满足了就立刻结束循环。
我们来写一个最简单的例子:输出1-5:
i = 1while i <= 5:print(i) i = i + 1 # 每次循环让i加1,不然会无限循环哦!
运行结果:
12345
正确输出了1-5,你看,和for循环结果一样,只是写法不同。
这里有一个非常非常重要的注意点:一定要记得在循环里改变循环变量,比如上面例子里的i = i +1,如果忘记写了,i永远都是1,条件i <=5永远满足,循环就会永远停不下来,这就是我们常说的死循环。
举个实用例子:猜数字游戏升级,能一直猜直到猜对
我们昨天写的猜数字只能猜一次,现在我们用while循环升级一下,让用户可以一直猜,直到猜对为止:
answer = 8while True: # True永远满足,所以这是一个无限循环,我们猜对了再break出去 guess = int(input("猜一个1-10之间的数字: "))if guess > answer:print("你猜大了,再试试")elif guess < answer:print("你猜小了,再试试")else:print("恭喜你猜对了!游戏结束")break # 猜对了,跳出循环
运行一下试试:
猜一个1-10之间的数字: 5你猜小了,再试试猜一个1-10之间的数字: 7你猜小了,再试试猜一个1-10之间的数字: 9你猜大了,再试试猜一个1-10之间的数字: 8恭喜你猜对了!游戏结束
是不是一下子就好玩多了?这个例子里我们用到了break,它的作用就是立刻跳出当前循环,我们马上来讲循环里的两个关键词:break和continue。
循环里的两个关键词:break和continue
在循环里我们经常会用到两个关键字来控制循环,非常好用:
1. break:直接跳出整个循环,循环结束
不管你循环到哪了,只要碰到break,整个循环立刻结束,不再执行了,我们上面猜数字游戏猜对了就用break跳出循环,非常合适。
2. continue:跳过这一次,直接开始下一次循环
如果碰到continue,这一次循环里continue后面的代码就不执行了,直接跳到循环开头,开始下一次循环。
我们举个例子说明一下,比如我们要输出1-10之间所有不是3倍数的数字:
for i in range(1, 11):if i % 3 == 0:continue # 如果是3的倍数,跳过这次,不输出print(i)
运行结果:
12457810
所有3的倍数(3、6、9)都被跳过了,没有输出,完美符合我们的要求。
循环嵌套:循环里面还能再放循环
和if一样,循环也可以嵌套,就是一个循环里面再放一个循环,我们举个经典例子:打印九九乘法表。
九九乘法表就是每行有i个算式,一共9行,所以用两层循环就能搞定:
# 第一层循环:控制行数,一共9行for i in range(1, 10):# 第二层循环:控制每行有几个算式,第i行有i个算式for j in range(1, i+1):# 打印算式,end=" "表示不换行,都放在同一行print(f"{j}×{i}={i*j}", end="\t")# 一行所有算式都打完了,换一行print()
运行结果:
1×1=11×2=2 2×2=41×3=3 2×3=6 3×3=91×4=4 2×4=8 3×4=12 4×4=161×5=5 2×5=10 3×5=15 4×5=20 5×5=251×6=6 2×6=12 3×6=18 4×6=24 5×6=30 6×6=361×7=7 2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=491×8=1 2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=641×9=9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81
完美!直接打印出九九乘法表,你可以把代码复制运行一下看看效果,是不是很酷?这就是循环嵌套的威力。
⚠️ 新手容易踩的坑
总结几个新手写循环最容易犯的错,记得避开:
- while循环忘记更新循环变量,导致死循环:比如前面例子里忘记写
i = i +1,循环永远停不下来,一定要记得更新 - range写错结束位置:range是左闭右开,所以要包含结束位置,要把end写成目标数+1,别忘啦
- 混淆break和continue:break是直接结束整个循环,continue只是跳过本次,别搞混了
- 循环嵌套缩进错误:内层循环一定要正确缩进,不然Python会认错代码块,结果肯定不对
💡 什么时候用for,什么时候用while?
很多新手会纠结这个问题,其实很简单:
- 如果你知道循环次数,或者要遍历一个序列 → 优先用for循环,写法更简洁
- 如果不知道循环次数,只知道什么时候结束 → 用while循环更方便
比如前面猜数字游戏,你不知道用户要猜几次才能猜对,所以用while更合适;如果你要遍历一个字符串,知道有多少个字符,用for更合适。
记住这个规则,基本就不会选错啦。
📝 今日小结
今天我们学习了Python里两种非常重要的循环语句,总结一下重点:
for循环适合已知循环次数的场景,常配合range()一起用,用来遍历序列非常方便while循环适合未知循环次数的场景,靠条件判断是否继续循环break:直接跳出整个循环;continue:跳过本次循环,继续下一次- 循环可以嵌套,用来处理比如九九乘法表这种多层重复的问题
- 一定要小心死循环,while循环记得更新循环变量,range记得左闭右开
👉 今日作业:
- 用for循环计算1-100之间所有偶数的和,输出结果
- 用while循环实现:输出所有1-100之间能被7整除的数
- 思考一下:怎么用循环找出1-100之间所有的质数?写代码试试(提示:质数就是大于1,只能被1和自己整除的数)
- 修改我们今天写的猜数字游戏,加上次数限制:最多只能猜5次,5次还没猜对就直接结束游戏,输出"游戏失败",猜对了就提前结束。
明天我们会学习Python里非常常用的数据结构——列表,让你能方便地存储一堆数据,记得来打卡学习呀~
如果觉得这个零基础Python教程对你有用,欢迎点赞关注哦~