惬意上手Python —— while

上篇文章介绍了Python中的for循环和嵌套循环的一些案例,如果想了解可以点击链接:Python中的分支与循环-CSDN博客

这篇文章介绍 python 中的 while 循环。如果说 for 循环适用于循环次数已知的情况,那 while 就适用于循环次数未知的情况。

1. 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")

2. while 循环嵌套

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()

结果: 

惬意上手Python —— while_第1张图片

上面是用 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()

漏斗图形如下:

惬意上手Python —— while_第2张图片

这题与前题相似,如果不理解,可借助坐标系,当 c = 1,r = 1时,代表坐标系中的点(1,1)。 

其实看不懂也不用介意,更不用有任何的情绪,因为这是大多数新手必定经历的阶段,当你有了一定的储备,你会觉得这些很简单。 

3. for 与 while 都可以使用 else

for 与 while 都可以使用 else,如果你学过其它编程语言,你会发现这是python仅有的。

3.1 for 使用 else 

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 和自身整除的自然数。 

3.2 while 使用 else

while 和 else 连用,else 中的缩进块执行情况有以下三种情况:

  1.  while循环中的代码块会反复执行,直到循环条件变为False为止。
  2.  如果while循环正常结束(即循环条件变为False),else块中的代码会被执行一次。
  3.  如果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

其实都相差不大,如果有看不懂的地方,可以直接评论或私聊,看到后第一时间为你解答。

本文结束~‍‍‍ 

 惬意上手Python —— while_第3张图片

你可能感兴趣的:(python,开发语言)