我正在尝试编写一个看起来像这样的程序,如果输入数字是6,或类似输出应该是这样的:
*
**
***
****
*****
******
*****
****
***
**
*
但当我这样做的时候,就像我被告知的那样,这种方式特别是因为这是同学告诉我的事情。 :
n = int(input("Enter a value for n: "))
for i in range(1, n + 1):
for j in range(n):
if n - j > i:
print(" ", end = " ")
else:
print("*", end = " ")
print("")
for i in range(1, n):
for j in range(n):
if n - j < i:
print(" ", end = " ")
else:
print("*", end = " ")
print("")
我明白了:
*
**
***
****
*****
******
*****
****
***
**
*
我做错了什么?请告诉我如何正确排队,如果有人可以帮助我,我真的很感激,所以我可以自己学会这样做,请帮助我...
答案 0 :(得分:2)
你的循环有点过于复杂,所以我有点简化:
n = int(input("Enter a value for n: "))
for x in range(n):
out = ''
for y in range(n-x):
out = out +' '
for y in range(x):
out = out +'*'
print(out)
for x in range(n):
out = ''
for y in range(x):
out = out +' '
for y in range(n-x):
out = out +'*'
print(out)
享受!
答案 1 :(得分:2)
如果您的作业要求您完全按照发布的方式编写代码,那么Austin Kootz的回答是可行的。
但是,更简化的方法是使用ljust
n = 6
for x in range(n - 1, 0, -1):
print ''.ljust(x, ' ') + '*'.ljust(n - x, '*')
for x in range(n):
print ''.ljust(x, ' ') + '*'.ljust(n - x, '*')
答案 2 :(得分:0)
你想要的第二组循环是获取行号(从1开始计数)并打印多个空格(“”),然后为行的其余部分打印星号(“*”)。因此,如果i是行号而j是列号(并且索引从0开始),则应该打印“”,同时j&lt; i + 1和“*”否则。这给出了:
# The top part of the pyramid
for i in range(1, n + 1):
for j in range(n):
if n - j > i:
print(" ", end = " ")
else:
print("*", end = " ")
print("")
# The bottom half of the pyramid
for i in range(n):
for j in range(n):
# Print spaces in the beginning of the row
# (while the column number is less than the row number)
if j < i + 1:
print(" ", end = " ")
# Print asterisks for the rest of the row
else:
print("*", end = " ")
print("")