Python根据输入生成指定数量相同星号行的代码问题如何修复
问题原因
你代码的问题在于多写了一层不必要的嵌套循环:
- 外层循环
for i in range(0,n)会执行n次,i的取值依次是0、1、2……n-1 - 内层循环
for j in range(0,i)的执行次数等于i的值,所以总打印行数是0+1+2+……+(n-1) = n*(n-1)/2
刚好当n=3时,32/2=3,和你要的行数一致,所以看起来是正确的,n取其他值的时候输出行数就会和预期不符。比如你输入4时,实际打印行数是6,你大概率是数错成了5行,输入5时刚好是54/2=10,和你观察到的一致。
修复方法
直接去掉内层循环即可,只保留一层循环执行n次打印:
def rows(n): row = "*" * 10 for i in range(n): print(row) cant = int(input("Choose the number of rows: ")) rows(cant)
如果想要更简洁的写法,也可以不用显式写循环:
def rows(n): print('\n'.join(['*'*10]*n))
内容的提问来源于stack exchange,提问作者Gibbon
相关产品推荐
相关产品推荐

