为什么我的程序没有按照应有的方式执行,我感到困惑和沮丧。我试图在python ver 3上使用星号创建一个直角三角形。我正在使用教科书中的确切代码,它是一条直线。请赐教。
示例
size = 7
for row in range (size):
for col in range (row + 1):
print('*', end='')
print()
结果
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
全部在一栏
答案 0 :(得分:7)
在Python中,缩进很重要。最终print
应与第二个for
对齐。
size = 7
for row in range (size):
for col in range (row + 1):
print('*', end='')
print()
结果:
*
**
***
****
*****
******
*******
空print
函数实际上意味着“移动到新行”。如果两个print
语句都出现在相同的缩进级别,那么每次打印星号时,都会移到下一行。如果第二个print
在外部内部for
循环,则只会获得7个换行符。
答案 1 :(得分:1)
作为替代方案,您可以使用一个for
循环!
>>> s=''
>>> for i in range(7):
... s+='*'
... print (s)
...
*
**
***
****
*****
******
*******
答案 2 :(得分:1)
它可能不是最易读的解决方案,但如果你喜欢oneliners,这是一种方法:
print "\n".join(["".join(["*" for col in range(row+1)]) for row in range(7)])
修改强>
只是为了缩短它:
print "\n".join(["*" * (row+1) for row in range(7)])
答案 3 :(得分:0)
str1 = 'x '
str2 = ' ' #give space within the inverted comma
for i in range (1,6):
print((str2 * (5 - i)) + (str1 * i))
#print((str1 * i)+(str2 * (5 - i)))
其他程序:
str1 = 'x '
str2 = '' #give empty string(remove sace from the single inverted comma)
for i in range (1,6):
print((str2 * (5 - i)) + (str1 * i))
#print((str1 * i)+(str2 * (5 - i)))