欢迎各位学术交流,有不懂,发现错误的,或想与博主沟通的都的可以评论留言
一、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以内的素数。