循环语句

浏览 1156

课文

在生活中,我们通常有用类似的行为处理一批数据的需求。 比如小学的时候,老师通常会拿着一批试卷在讲台上逐个念名字与分数,让同学到台上领取。

假设我们有一个列表,保存了我们的名字与对应的分数,如果我们要逐个打印的话就会很麻烦。

scores = [
    ('柯南', 98),
    ('路飞', 75),
    ('鸣人', 30),
    ('小明', 60),
]

print('{name}同学考了{score}分。'.format(name=scores[0][0], score=scores[0][1]))
print('{name}同学考了{score}分。'.format(name=scores[1][0], score=scores[1][1]))
print('{name}同学考了{score}分。'.format(name=scores[2][0], score=scores[2][1]))
print('{name}同学考了{score}分。'.format(name=scores[3][0], score=scores[3][1]))

柯南同学考了98分。
路飞同学考了75分。
鸣人同学考了30分。
小明同学考了60分。

如果班级上同学很多的话,我们可能又得加班了。 此时循环语句派上了用场。

while 循环

i = 0
while i < len(scores):
    print('{name}同学考了{score}分。'.format(name=scores[i][0], score=scores[i][1]))
    i += 1

while 关键字后面接一个条件判断表达式,如果表达式返回 True,则会执行代码块的语句。 我们在循环的代码块中注意要让某一时刻表达式返回的值为 False,否则会无法退出循环,俗称死循环

通常情况下死循环不会符合我们的业务需求,还会造成程序卡死,必须尽量避免。

print('我对你的爱如滔滔江水,绵延不绝。')
# 这便是一个死循环
while True:
    print('I love you.')
我对你的爱如滔滔江水,绵延不绝。
I love you.
I love you.
I love you.
I love you.
I love you.
I love you.
I love you.
......

break

除了改变表达式的值,来结束 while 循环。我们仍可以在循环代码中通过break关键字来退出循环。

i = 0
while True:
    print('{name}同学考了{score}分。'.format(name=scores[i][0], score=scores[i][1]))
    i += 1

    if i > len(scores):
        break

continue

continue 意味着我们可以跳过之后的代码,直接开始下一次循环。

i = 0
while i < len(scores):
    print('{name}同学考了{score}分。'.format(name=scores[i][0], score=scores[i][1]))

    if scores[i][1] >= 60:
        continue

    print('{name}同学这次考试不及格'.format(name=scores[i][0]))
    i += 1
柯南同学考了98分。
柯南同学考了98分。
柯南同学考了98分。
柯南同学考了98分。
......

此时我们惊奇地发现,居然死循环了。 原来是因为 continue 后同样跳过了之后的 i += 1, 此时表达式就永远为 True 了。

我们可以在 continue 语句之前添加 i += 1防止死循环。

i = 0
while i < len(scores):
    print('{name}同学考了{score}分。'.format(name=scores[i][0], score=scores[i][1]))

    if scores[i][1] >= 60:
        i += 1
        continue

    print('{name}同学这次考试不及格'.format(name=scores[i][0]))
    i += 1
柯南同学考了98分。
路飞同学考了75分。
鸣人同学考了30分。
鸣人同学这次考试不及格
小明同学考了60分。

可怜的鸣人同学,被单独挂了出来,雏田同学心疼三秒。

for 循环

如果你也觉得自己管理 i 变量,决定表达式很麻烦的话。那 for 表达式可以帮我们大忙了。

for item in scores:
    print('{name}同学考了{score}分。'.format(name=item[0], score=item[1]))

使用 for 循环在达到同样效果的前提下,我们的代码一下简单明了了不少。再次验证了, Life is short, we need python.

并且,我们可以循环的同时解包。 此时我们便将原先的 item[0] 赋值到了 name 变量中, item[1] 赋值到了 score 变量中。

for name, score in scores:
    print('{name}同学考了{score}分。'.format(name=name, score=score))

代码更清晰明了了,只是工资还维持在原地,so sad。

实战

1,假如有一个数组 [4, 8, 12, 2, 24, 3],你能否用一个循环得出其中最大的数呢。

解析

1,假如有一个数组 [4, 8, 12, 2, 24, 3],你能否用一个循环得出其中最大的数呢。

nums = [4, 8, 12, 2, 24, 3]

largest = None

for n in nums:
    if largest is None or n > largest:
        largest = n

print('最大值:', largest)
最大值: 24
点击查看

评论

登录参与讨论

wwd

2021-06-25

回复

子非鱼.

第二行:a=nums[0]

@wwd

2021-07-31

回复

共 1 条
  • 1
前往
  • 1