上篇文章介绍了Python中的for循环和嵌套循环的一些案例,如果想了解可以点击链接:Python中的分支与循环-CSDN博客
这篇文章介绍 python 中的 while 循环。如果说 for 循环适用于循环次数已知的情况,那 while 就适用于循环次数未知的情况。
while 的意思其实就是 “在……期间”,或者说 “当……”。
while 跟 if 有点像,后边是直接跟条件,条件为 True 执行,为 False 不执行。
注意:
默认开门(条件为 True),随着程序的执行关门(条件为 False)
循环内部要设置条件为 False,否则就是死循环
看到了吗,下面的代码就是一个死循环,因为只开了门,却没有关门。
while True:
print("hi")
下面是一个 正确的示例:
用while打印10次嗨嗨
i = 0
while i < 10:
i += 1
print("嗨嗨", i)
print("over")
即设置初始条件为 True,随着循环的执行,i 逐渐增加,直到 i > 10,结束循环。这就是既设置了开门,又设置了关门。
或者上面的代码可以写成:
i = 0
while True:
i += 1
print("嗨嗨")
if i == 10:
break
print("over")
while 的循环嵌套与 for 的循环嵌套差不多,只是有时需要设置一些条件。具体二者的差距读者可以看前篇文章对比一下 Python中的分支与循环-CSDN博客
这里只介绍一些 while 循环嵌套的例子。
1.使用while写乘法表
c = 0 # 代表列
while c < 9:
c += 1
r = 0 # 代表行
while r < c:
r += 1
print(f"{r} * {c} = {c * r}", end="\t")
print()
结果:
上面是用 while 写的乘法口诀表 ,可以看前文用 for 写的乘法口诀表。
print(f"{c} * {v} = {v * c}", end="\t") 用到了 格式化,可以发现双引号前面的 f 即 format,用 { } 括起来,就可以输出括号里面的变量。
再看下面一个用 while 写的循环嵌套,前篇文章是用 for 写的。
用while打印漏斗
c = 0 # 代表列
while c < 9:
c += 1
r = 0 # 代表行
while r <= 9:
if r <= c and r + c >= 10 or r >= c and r + c <= 10:
r += 1
print(" * ", end="")
else:
r += 1
print(" ", end="")
print()
漏斗图形如下:
这题与前题相似,如果不理解,可借助坐标系,当 c = 1,r = 1时,代表坐标系中的点(1,1)。
其实看不懂也不用介意,更不用有任何的情绪,因为这是大多数新手必定经历的阶段,当你有了一定的储备,你会觉得这些很简单。
for 与 while 都可以使用 else,如果你学过其它编程语言,你会发现这是python仅有的。
key :当 for 中的缩进块没有执行,就执行 else 的缩进块
以下是一个利用 for 和 else 求 20 以内最小的 5 个质数 的解题过程:
count = 0
for j in range(2, 20): # 求20以内的不为1的数
for i in range(2, j): # 求 2-j 内的数
if j % i == 0: # 判断 j 是否为质数
break
else: # 当 break 不被执行时,执行 else 证明 j 是质数
count += 1
print(j, "是质数")
if count == 5:
break
首先要知道质数就是大于 1 的且仅能被 1 和自身整除的自然数。
while 和 else 连用,else 中的缩进块执行情况有以下三种情况:
- while循环中的代码块会反复执行,直到循环条件变为False为止。
- 如果while循环正常结束(即循环条件变为False),else块中的代码会被执行一次。
- 如果while循环被break语句中断,那么else块中的代码不会被执行。
以下是一个用 while 和 else 写的 判断 一个数是不是质数 的例子:
value = int(input("输入:"))
i = 1
while i < value - 1:
i += 1
if value % i == 0:
break
else:
print(f"{value}是质数")
用 else 来判断比较简单,但仅限于 python 中使用。
最后这个例子看懂,你就掌握的不错了
求 1000 以内 10 个最大的质数
解题过程如下:
i = 1000
count = 0
while i > 2: # 用于从以 1000 - 1 去判断
i -= 1
j = 2
while j < i: # 用于判断 i 是否为质数
if i % j == 0:
break
j += 1
else:
print(f"{i}是质数")
count += 1
if count == 10:
break
其实都相差不大,如果有看不懂的地方,可以直接评论或私聊,看到后第一时间为你解答。
本文结束~