【问题标题】:How to print character every time after a loop is completed每次循环完成后如何打印字符
【发布时间】:2021-12-01 21:16:54
【问题描述】:

我在打印以下图案时遇到问题,不知道如何解决。

注意:必须使用 for 和 while 循环。

我正在尝试实现如下模式:

0
1
####
2
3
####
4
5
####

但我得到了:

0
1
####
1
2
####
2
3
####
3
4
####

我使用的代码是:

n = 0
for z in range(10):
    while n < 2:
        print(z)
        z += 1
        n += 1
    print("####")
    n = 0

【问题讨论】:

标签: python python-3.x for-loop while-loop


【解决方案1】:

你只需要一个循环。您可以选择whilefor

while 的版本:

n = 0
while n < 6:
    print(n)
    print(n+1)
    print('####')
    n += 2

带有for的版本:

for n in range(0, 6, 2):
    print(n)
    print(n+1)
    print('####')

如果你真的想使用两个循环(如果你想在 #### 之间打印超过 2 个数字的系列,这可能很有用):

for n in range(0, 6, 2):
    for z in range(2):
        print(n+z)
    print('####')

输出:

0
1
####
2
3
####
4
5
####

【讨论】:

  • 你解释的方式很详细,我很容易理解。
  • 很高兴它有帮助,编码愉快;)
【解决方案2】:

要小心,因为每次 with 循环结束时 z 都会取 range() 中的值。 mozway 是对的,但我认为 n 应该从 1 开始:

n = 1
while n < 6:
    print(n)
    print(n+1)
    print('####')
    n += 2

【讨论】:

  • 为什么?预期输出显示 0 作为起点
  • 没错,我看错了!
【解决方案3】:

问题正在发生,因为在 z += 1 中,您假设要更改 for z in range(10): 中的 z 值,但在此 for 循环中,每次迭代中 z 的值是列表中的下一个序列[0,1,2,3,4],所以它会丢弃你所做的z += 1操作,所以它会重复#####之后的数字。

解决这个问题的方法是这样做,在 if 语句中检查 n 是否为 2,并且不要更改 z 的值:

n = 0
for z in range(10):
    print(z)
    n += 1
    if (n==2):
        print("####")
        n = 0

这会打印出来:

0
1
####
2
3
####
4
5
####
6
7
####
8
9
####

【讨论】:

    猜你喜欢
    • 2017-04-29
    • 2016-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    • 2021-03-13
    • 2016-11-05
    相关资源
    最近更新 更多