为什么需要中断才能停止while循环

时间:2018-12-18 02:39:09

标签: python-3.x loops while-loop nested

在嵌套循环上执行Python3练习以创建此输出:

*
**
***
****
*****
******
*******
********
*********

但是,即使我将条件设置为i <= num时,该函数仍继续执行无限量的时间。我发现我需要添加中断,但是我不明白为什么循环在我调用函数后的1秒钟后仍继续执行。

def triangle(num):
    i = 0
    while i <= num:
        for i in range(num):
            print(i*"*")
            i+=1
        break

triangle(10)

1 个答案:

答案 0 :(得分:0)

您拥有的程序正在使用相同的循环变量iwhilefor循环中进行迭代。

这很令人困惑,因此为了得到答案,他们引入了随机break

break是无用的,可以在没有外部while循环的情况下工作。您可以只使用for循环,它将起作用:

def triangle(num):
    for i in range(num):
        print(i*"*")

因此,中断只会使您进入内部for循环,并在完成后立即退出。

说实话,您的程序似乎是一个猴子补丁程序。尽管它可以工作,但由于逻辑异常而难以读取和维护。

  

现在,以上代码如何工作?

让我们看一下眼前的问题:

  1. 我们必须创建一个三角形序列“ *”。
  2. “ *”的数量应增加,并最终等于作为参数发送的num的数量。
  3. 在python中,任何字符串x乘以整数n都会创建一个n重复x的字符串。

所以如果我有 x =“ abc” newX = x * 3 print(newX)#打印abcabcabc

  1. 因此,您所需要做的就是拥有一个可以从1 to num开始并乘以“ *”并打印出来的变量。 for循环和其中的print语句已表明了这一点。

修改:

如果您被迫使用两个循环,这是模仿它的好方法:

def triangle(n):
    for i in range(n):
        for j in range(i):
            print("*")

或另一种怪异的方式:

def triangle(n):
    i=0
    while(i<n):
        for j in range(n):
            print(i*"*")
            i += 1