流程控制之while循环

发布时间 2023-05-26 13:08:02作者: 开源共享

欢迎各位学术交流,有不懂,发现错误的,或想与博主沟通的都的可以评论留言
一、while循环语法

Python中的while循环用于重复执行一段代码,直到指定的条件不再满足为止。其基本语法为:

while 条件:
    代码块

当条件成立时,执行代码块中的代码;然后重新判断条件是否成立,如果仍然成立,则继续执行;如果不成立,则跳出循环。

二、while + break

在while循环中,我们可以使用break语句来提前退出循环。具体实现如下:

i = 0
while i < 10:
    print(i)
    if i == 5:
        break
    i += 1

在上面的代码中,变量i从0开始递增,当i等于5时,执行break语句,提前退出循环。因此,循环只会执行6次,输出的结果为:

0
1
2
3
4
5
三、while + continue

在while循环中,我们还可以使用continue语句来跳过当前迭代并进入下一次迭代。具体实现如下:

i = 0
while i < 10:
    i += 1
    if i % 2 == 0:
        continue
    print(i)

在上面的代码中,变量i从1开始递增,当i是偶数时,执行continue语句,跳过当前迭代并进入下一次迭代。因此,循环只会输出1、3、5、7、9这五个奇数。

四、while循环的嵌套

在Python中,我们可以在while循环中进行嵌套,实现复杂的重复执行功能。其基本语法为:

python
while 条件1:
代码块1
while 条件2:
代码块2
当条件1成立时,进入第一个while循环,并执行其中的代码块1;然后进入第二个while循环,并根据条件2的成立情况执行其中的代码块2;再回到第一个while循环继续判断条件1是否成立,以此类推。

五、tag控制循环退出

在Python中,我们可以使用tag技巧来更灵活地控制循环的退出。具体实现如下:

i = 0
tag = False

while i < 10:
    j = 0
    while j < 10:
        if (i * j) % 7 == 0:
            tag = True
            break
        j += 1
    if tag:
        break
    i += 1

print(i, j)

在上面的代码中,变量i和j分别从0开始递增,在内层循环中,判断两数之积是否能被7整除,如果成立,则设置tag变量为True,并执行内层循环的break语句,跳出内层循环。在外层循环中,判断tag变量是否为True,如果是,则执行外层循环的break语句,跳出循环;否则继续执行外层循环并递增变量i,以此类推。这样就可以灵活地控制循环的退出。

六、while + else

Python中的while循环还支持一个可选的else分支,当循环正常结束时(即不是通过break语句提前退出循环),会执行else分支中的代码。其基本语法为:

while 条件:
    代码块
else:
    循环结束后的代码

当条件成立时,进入循环并执行其中的代码块;然后重新判断条件是否成立,如果仍然成立,则继续执行;如果不成立,则继续执行else分支中的代码。

七、练习

7.1 练习1:猜数字游戏

题目描述:

编写一个猜数字的游戏程序,程序生成一个1~100之间的随机数,用户可以根据提示输入猜测的数字,如果猜对了则输出“恭喜你,猜对了!”并结束游戏;如果猜错了,则根据猜测值与实际值之间的大小关系给出“猜大了”或“猜小了”的提示,然后让用户继续猜测。

解题思路:

根据题目描述和要求,我们可以使用while循环实现该游戏,具体代码如下:

import random

answer = random.randint(1, 100)

while True:
    guess = int(input("请猜一个数字(1~100):"))
    if guess == answer:
        print("恭喜你,猜对了!")
        break
    elif guess > answer:
        print("猜大了,请重新猜测!")
    else:
        print("猜小了,请重新猜测!")

首先,我们使用Python的random模块生成一个1~100之间的随机数。然后,使用无限循环实现重复猜数字的功能,在每次循环中让用户输入猜测的数字,并与实际数字进行比较。如果猜对了,则输出“恭喜你,猜对了!”并使用break语句提前退出循环;如果猜错了,则根据大小关系提示猜大了或猜小了,并让用户继续猜测。

7.2 练习2:求素数

题目描述:

编写一个程序,输出100以内的所有素数。

解题思路:

根据素数的定义,我们可以从2开始递增,判断每一个数是否是素数。具体实现如下:

for num in range(2, 101):
    for i in range(2, num):
        if num % i == 0:
            break
    else:
        print(num)

首先,range(2, 101)表示从2开始到100结束(不包括101)的所有整数。然后,使用两层for循环,对于每个num值,从2到num-1依次测试是否能被整除,如果能被整除,则跳出内层循环;否则执行else分支中的代码,即输出该数值。最终,输出的结果为所有100以内的素数。