Python中的循环结构——for循环和while循环

        在Python中的列表(2)——列表操作以及前面的内容中,其实已经使用了for循环,如使用for循环遍历整个列表或字典。

1、循环的概念

        循环结构是编程中一种非常重要的结构,循环可以让程序自动完成重复的工作,从而极大地节省时间开销和提高编程效率。

2、for循环

names = ['Peter','Mike','Rose','Jack']
for each in names:
    print(each)

#结果:    
Peter
Mike
Rose
Jack

        在for循环中,对于用于存储每轮循环的值的变量可以自定义任何名称(如上述代码中的each),然而,建议使用能描述元素意义的名称,这种命名有助于自己回顾代码含义以及方便他人阅读你写的代码。

names = ['Peter','Mike','Rose','Jack']
for each in names:
    print(each)
print('\nHello World.')

#结果:
Peter
Mike
Rose
Jack

Hello World.

        在for循环中,要格外注意冒号和缩进,每次循环中都执行一遍缩进后的代码段,更确切地说是for循环结构体中的代码。在所有循环都结束之后,才会继续往下执行for循环之后的代码(即上述代码中没有缩进的print('\nHello World.'))。

        因此,是否缩进以及缩进主要是根据该语句是否需要放在for循环结构体中以及是需要重复执行的还是只执行一次的。编写for循环结构时,必须先梳理清楚程序的逻辑关系,这不仅适用于Python中的编程,也适用于所有编程。

3、while循环

        只要while后面的条件测试为True,则while循环不断的运行,直到指定的条件不满足为止。

3.1 while循环的使用

num = 0
while num < 5:
    print(num)
    num = num + 1

#结果:
0
1
2
3
4

        while可以与input()函数结合使用,当用户输入为某一特定值时才停止循环,否则一直循环下去:

cmd = ''
while cmd != 'No':
    cmd = input('Please entry your cmd: ')
    print(cmd)

#结果:
Please entry your cmd: Yes
Yes
Please entry your cmd: mj
mj
Please entry your cmd: No
No

代码中,cmd首先初始化,然后执行循环,只要用户不输入‘No’,就一直循环。

3.2 break退出循环

        如果要退出while循环,不在运行循环中剩余的代码,可以使用break语句。

while True:
    cmd = input('Please entry your cmd: ')
    if cmd == 'No':
        break
    else:
        print(cmd)

#结果:
Please entry your cmd: Yes
Yes
Please entry your cmd: my
my
Please entry your cmd: 2
2
Please entry your cmd: No

一旦break语句执行,就不再执行break语句后面的(循环结构体内的)代码,也不再测试while后面的条件了。在python中,任何循环都可以使用break语句,例如,可以使用break语句结束遍历列表或字典的for循环:

nums = [2,5,4,1,9,8]
for num in nums:
    if num == 4:
        break
    else:
        print(num)

#结果:
2
5

3.3 循环中的continue

        若要返回循环的开头,继续根据条件测试决定是否继续执行循环,可以使用continue语句,它不像break一样直接退出整个循环,只是在这一轮循环内,跳过continue后面的语句。

while True:
    cmd = input('Please entry your cmd: ')
    if cmd == 'No':
        continue
    else:
        print(cmd)

#结果:
Please entry your cmd: yes
yes
Please entry your cmd: mo
mo
Please entry your cmd: No
Please entry your cmd: yy
yy

3.4 避免死循环

        如果while后面的测试条件一直为True,循环就无法结束,最终成为死循环。

a = 0
while a >= 0:
    print(a)
    a = a + 1

   如果程序陷入了死循环,要想结束程序运行,可以按“Ctrl+C”,也可以直接关闭程序。

3.5 使用while循环处理列表和字典

        for循环可以遍历列表,但不建议在for循环中修改列表,否则导致难以跟踪其元素的变化。如果需要在遍历列表的同时对其修改,可以使用while循环。

3.5.1 元素在不同列表之间移动

oldlist = [1,5,3,4,9,5,7]
newlist = []
while oldlist:
    temp = oldlist.pop()
    print(temp)
    newlist.append(temp)
print(newlist)

#结果:
7
5
9
4
3
5
1
[7, 5, 9, 4, 3, 5, 1]

3.5.2 删除列表中的所有特定值

        同一个值在列表中可能出现多次,如果要删除列表中的所有该值,可以使用while循环来完成: 

oldlist = [1,5,3,4,9,5,3,4,3,7]
print(oldlist)
while 3 in oldlist:
    oldlist.remove(3)
print(oldlist)

#结果:
[1, 5, 3, 4, 9, 5, 3, 4, 3, 7]
[1, 5, 4, 9, 5, 4, 7]

上述代码删除列表中的多个3。

3.5.3 使用while循环为字典添加元素

grade_record = {}

#初始化状态标志
flag = True

while flag:
    #让用户输入名字和成绩信息
    name = input('\nPlease input your name: ')
    grade = input('Please sign in your grade: ')

    #将元素添加到字典中
    grade_record[name] = grade

    #询问是否继续输入
    cmd = input('Is there anyone else?(yes/no)')
    if cmd == 'no':
        flag = False

#登记完成,打印结果
print('\n---Grades:---')
for name, grade in grade_record.items():
    print(name + ':' + grade)

#结果:

Please input your name: Tom
Please sign in your grade: 95
Is there anyone else?(yes/no)yes

Please input your name: Lucy
Please sign in your grade: 90
Is there anyone else?(yes/no)no

---Grades:---
Tom:95
Lucy:90

上述代码是一个简单的成绩录入程序,使用while循环不断录入学生的姓名和成绩,并将其作为键值对放入字典中,知道用户录入完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白的高手之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值