在嵌套循环上进行Python3练习以创建以下输出:
*
**
***
****
*****
******
*******
********
*********
但是即使我将条件设置为while I<=num,函数继续执行无限长的时间。我发现我需要添加break,但我不明白为什么循环在我调用函数的1次之后继续执行。
def triangle(num):
i = 0
while i <= num:
for i in range(num):
print(i*"*")
i+=1
break
triangle(10)
您的程序使用相同的循环变量i
在while
和for
循环中进行迭代。
这个结果令人困惑,因此为了得到答案,他们引入了一个随机的break
。
这个break
是无用的,并且可以在没有外部while
循环的情况下工作。你只需要有for
循环,它就会工作:
def triangle(num):
for i in range(num):
print(i*"*")
因此,中断只会让你进入内部for循环,并在完成后立即退出。
老实说,你的程序看起来像是一个猴子补丁程序。尽管它有效,但由于不寻常的逻辑,它很难阅读和维护。
现在,上面的代码是如何工作的?
让我们看看眼前的问题:
- 我们必须创建一个"*"的三角形序列
- "*"的数量应该不断增加,最终等于作为参数发送的
num
的数量 - 在python中,任何字符串
x
乘以整数n
都会创建一个重复x
的n
字符串
所以如果我x="abc"newX=x*3print(newX(#打印abcabcabc
- 所以你所需要做的就是有一个变量,可以从
1 to num
开始,乘以"*"并打印出来。这已经在for
循环和内部的打印语句中指出
编辑:
如果你被迫使用两个循环,这是一个模仿它的好方法:
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