还在问python的循环语句怎么写?别急,这事儿嘛,刚上手Python的同学,十有八九都会在这里打个转转。说实话,这玩意儿真没那么玄乎,就是那点儿事儿,for和while,两大主力,搞明白了,基本上Python里的循环就通透了。就像你每天吃饭睡觉上班(或者上学)一样,总有些事儿得重复干,对吧?编程也一样,总有些任务需要一遍又一遍地执行,这时候,循环就登场了,它是咱们偷懒(划掉,是提高效率)的神器。

要问python的循环语句怎么写,其实核心就那两种:for 循环和 while 循环。听起来是不是有点儿像小时候玩的积木?对,就是这两个基本块儿,能搭出各种各样的重复操作。

先说说 for 循环吧。这家伙,通常是用来遍历某个序列的,比如列表(List)、元组(Tuple)、字符串(String),或者其他任何“可迭代对象”。啥叫“可迭代”?简单理解,就是那些里面的元素可以一个接一个地拿出来看的东西。

它的基本架势是这样的:

python
for 变量 in 可迭代对象:
# 这里是循环体,会被重复执行
# 在每一次循环里,'变量'都会被赋值为可迭代对象中的下一个元素

你比如说,我有一堆水果要数数或者看看都是啥:

python
fruits = ['苹果', '香蕉', '橙子', '葡萄']
for fruit in fruits:
print(f"我有一个 {fruit}")

跑一下这段代码,你会看到它依次打印出“我有一个 苹果”,“我有一个 香蕉”,等等。这里的 fruit 就是那个“变量”,它在每次循环中,先被赋值为 ‘苹果’,然后是 ‘香蕉’,以此类推,直到列表里的所有元素都被“看”了一遍。

字符串也是可迭代的!你想啊,字符串不就是一串字符嘛:

python
my_string = "Python"
for char in my_string:
print(f"看,这个字母是:{char}")

它会把 ‘P’,’y’,’t’,’h’,’o’,’n’ 一个一个地给你拎出来。

别忘了 Python 里超级好用的一个函数叫 range()。如果你不是想遍历现有的序列,而是想按照某个数字范围来循环,range() 就是你的好朋友。它能生成一个数字序列,虽然它本身不是一个列表(省内存),但它是可迭代的,完全可以用在 for 循环里。

range() 有几种用法:

  1. range(stop):从 0 开始,到 stop-1 结束。比如 range(5) 会生成 0, 1, 2, 3, 4。
  2. range(start, stop):从 start 开始,到 stop-1 结束。比如 range(2, 7) 会生成 2, 3, 4, 5, 6。
  3. range(start, stop, step):从 start 开始,到 stop-1 结束,每次跳跃 step 步长。比如 range(1, 10, 2) 会生成 1, 3, 5, 7, 9。步长可以是负数,实现倒序。比如 range(10, 0, -1) 会生成 10, 9, 8, …, 1。

所以,如果你想循环固定次数,或者遍历一个数字范围,for i in range(...) 这个模式是见到最多的了。比如,计算从1加到100的所有整数和:

python
total = 0
for i in range(1, 101): # 从1到100,记住range是“左闭右开”
total += i
print(f"1加到100的和是:{total}")

是不是感觉 for 循环很直观?特别适合那种“我有多少东西,我想对每个东西都干点啥”的场景。

好,接下来聊聊 while 循环。这位老兄跟 for 的脾气不太一样。while 循环不是盯着一个序列不放,它更像是盯着一个“条件”。只要这个条件是真的(True),它就一直执行循环体里的代码,直到条件变成假的(False)为止。

它的基本写法是:

python
while 条件:
# 循环体
# 记得在循环体里改变条件相关的变量,否则可能变“无限循环”!

重点来了,那个“条件”必须是个布尔表达式,就是结果要么是 True,要么是 False。而且,你得确保在循环体内部,这个条件最终能变成 False,否则…恭喜你,得到一个停不下来的“无限循环”!除非你强制终止程序(比如按 Ctrl+C)。

举个例子,我想数数,从1数到5:

python
count = 1
while count <= 5: # 条件:count小于等于5
print(count)
count += 1 # 关键一步:改变count的值,让条件有机会变成False

如果忘了 count += 1 这步,那 count 永远是1,1 <= 5 永远是 True,程序就卡那儿了,无限打印1。这可是初学者常踩的坑,一定要注意!

while 循环特别适合那种“我不知道要重复多少次,但我知道什么时候应该停下”的场景。比如,写一个简单的猜数字游戏,让用户一直猜,直到猜对为止:

“`python
import random

secret_number = random.randint(1, 10)
guess = 0 # 初始值,让循环先跑起来

while guess != secret_number: # 条件:猜的数字不等于秘密数字
guess_str = input(“请猜一个1到10之间的数字:”)
guess = int(guess_str) # 假设用户输入的是有效的数字

if guess < secret_number:
    print("太小了!")
elif guess > secret_number:
    print("太大了!")

print(f”恭喜你,猜对了!秘密数字是 {secret_number}”)
“`

你看,这里我们不知道用户要猜多少次,可能是1次,也可能是10次,但我们知道什么时候循环结束——当用户猜的数字等于秘密数字时。用 while 来写就特别合适。

除了 forwhile,还有几个“帮手”可以在循环里头调控节奏,它们是 breakcontinue

break 就像是循环里的“紧急刹车”。一旦执行到 break,不管循环条件是否还满足(或者 for 循环是否还有没遍历完的元素),整个循环会立即、立刻、马上停止,程序会跳出当前循环,继续执行循环后面的代码。

啥时候用?比如在一个很长的列表里找某个特定的东西,找到了第一个就够了,后面的不用再找了,直接 break

“`python
items = [‘书包’, ‘铅笔盒’, ‘橡皮擦’, ‘书本’, ‘尺子’, ‘书包’]
search_item = ‘书本’

for item in items:
print(f”正在检查:{item}”)
if item == search_item:
print(f”找到了!是 {search_item}”)
break # 找到书本了,赶紧溜!后面的书包不用再看了
“`

执行到找到“书本”的时候,后面的“尺子”和第二个“书包”就不会再被打印出来了,因为 break 已经让循环提前结束了。

再来说说 continue。它更像是一个“跳过当前回合”的指令。执行到 continue 时,当前这次循环剩余的代码会被跳过,程序直接进入下一次循环的开始。

这个啥时候用?比如处理一堆数据,有些数据是“脏的”或者不符合要求的,你不想处理它们,但又不想停下整个循环,就想跳过这一个,继续处理下一个。

“`python
numbers = [1, 3, -2, 5, 0, -1, 4]
positive_sum = 0

for num in numbers:
if num <= 0:
print(f”发现非正数 {num},跳过它。”)
continue # 如果是小于等于0的数,跳过当前这次循环,直接看下一个数
positive_sum += num # 只有当num大于0时,才会执行这行代码

print(f”所有正数的和是:{positive_sum}”)
“`

你会看到 -20 被“跳过”了,没有加到 positive_sum 里。

还有个不常用但在特定场景下有点儿意思的 else 子句,它能跟 forwhile 循环搭配。循环后面跟 else?听着是不是有点儿怪?

for 循环的 else:当 for 循环正常执行完毕(也就是把所有可迭代对象里的元素都遍历完了,没有被 break 中途打断),else 块里的代码就会被执行。
while 循环的 else:当 while 循环的条件变成 False,正常结束时,else 块里的代码就会被执行。

如果循环被 break 中途打断了,那么 else 块里的代码就不会执行。

这特性挺适合用来实现“查找某个东西,如果整个循环找完了都没找到,就执行某个操作”。

“`python
data = [‘apple’, ‘banana’, ‘cherry’]
target = ‘grape’

for item in data:
if item == target:
print(f”找到了 {target}!”)
break # 找到了就break

else: # 如果循环没被break打断,也就是没找到
print(f”在列表中没找到 {target}”)
“`

运行上面这段,因为 ‘grape’ 不在列表里,循环会正常遍历完 [‘apple’, ‘banana’, ‘cherry’],然后因为没遇到 break,最后会执行 else 块里的 print 语句。如果你把 target 改成 ‘banana’,那么找到后 break 就会执行,else 块就不会被执行了。这个用法挺精妙的,但不是特别常用,了解一下就好。

最后,别忘了 嵌套循环。啥叫嵌套循环?就是循环里头再套个循环,就像俄罗斯套娃。最经典的例子就是打印九九乘法表了:

“`python

外层循环控制行

for i in range(1, 10):
# 内层循环控制列
for j in range(1, i + 1): # 注意这里的范围是到i+1,因为要打到“乘数等于被乘数”那一下
# print默认会换行,用end=’ ‘让它们在同一行,用\t让它们对齐
print(f”{j}x{i}={i*j}\t”, end=”)
# 一行打完了,换行
print()
“`

外层 i 循环从1到9,内层 j 循环从1到 i。这样就能打出漂亮整齐的九九乘法表了。嵌套循环非常强大,处理二维数据(比如矩阵)、或者需要对每种组合都做一遍操作的时候特别管用。不过嵌套的层数太多(比如超过三层),代码可读性就会下降,而且性能也可能受影响,写的时候得权衡一下。

你看,python的循环语句怎么写,归根结底就是玩转 forwhile,再根据需要搭配 breakcontinue,偶尔用用 else,搞搞嵌套。它们就像是编程里的“重复执行模块”,帮你把那些重复、枯燥的活儿交给电脑去干。

刚开始写循环,可能会遇到一些小问题,比如无限循环、循环次数不对、或者遍历字典不知道怎么拿key和value(提示:字典有 .keys().values().items() 方法,for key, value in my_dict.items(): 了解一下?)。这些都是正常的,谁不是从磕磕绊绊过来的?多写多练,多看看别人怎么写的,遇到问题了别怕google、别怕查文档。慢慢地,你就会发现,循环这东西,其实挺顺手的,它是你解决很多编程问题的好帮手。别让它成了拦路虎,而是要把它变成你的得力工具。加油!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。