我讨厌我不得不问这个,但我不能为我的生活弄清楚如何使这项工作。该程序应该要求输入一个奇数,然后创建一个颠倒的金字塔,第一行包含星号数量作为数字,最后一行只有一个,居中的星号。我已经设法弄清了大部分内容,但无论我尝试什么,我的星号拒绝排队。我已经看过这里类似的其他主题,并试图使用它们但仍然无法弄明白。我不确定为什么'我'被使用,但是在另一个帖子上看到了它,它看起来比我以前略好。
这是我的代码,我已经修改了很多但无济于事。
x=input('Enter an odd number width: ')
x_int = int(x)
print('Triangle:')
for i in range(x_int+1, 0, -1) :
numwhite = (x_int - i)/2
white_int= int(numwhite)
print(' '* white_int + '*'*i)
哪些输出(输入13):
Triangle:
**************
*************
************
***********
**********
*********
********
*******
******
*****
****
***
**
*
我希望它看起来像(输入7)
*******
*****
***
*
答案 0 :(得分:2)
除了将步骤值设置为-2
之外,如果使用Python的字符串format
方法,您将拥有更易读的代码。您可以使用居中对齐即可轻松居中您的星号。 ^
:
x = input('Enter an odd number width: ')
x_int = int(x)
print('Triangle:')
fmt = '{' + ':^{}'.format(x_int) + '}' # Notice the caret ^ and how the width is set
for i in range(x_int, 0, -2):
stars = '*'*i
print(fmt.format(stars))
试验:
Enter an odd number width: 15
Triangle:
***************
*************
***********
*********
*******
*****
***
*
您可以使用字符串格式执行更多操作。请查看参考:https://pyformat.info
答案 1 :(得分:2)
尝试类似:
x = int(input('Enter an odd number width: '))
print('Triangle:')
for i in range(x_int, 0, -1):
print('{:^{str_len}}'.format('* ' * i, str_len= x_int * 2))
这不仅适用于奇数。
答案 2 :(得分:1)
您需要将range
的“步骤”设置为-2
,这样它才能反向获取赔率。然后需要使+ 1
正常工作的空白数量。
x=input('Enter an odd number width: ')
x_int = int(x)
print('Triangle:')
for i in range(x_int, 0, -2):
numwhite = ((x_int - i)/2) + 1
white_int= int(numwhite)
print(' ' * white_int + '*'*i)
输出继电器:
Enter an odd number width: 7
Triangle:
*******
*****
***
*
更具可读性的代码及解释
x_int = int(input('Enter an odd number width: ')) # reducing
print('Triangle:')
for i in range(x_int, 0, -2): # -2 means only do every 2nd number in reverse
num_white = int(((x_int - i)/2) + 1) # Checking the math here, needed a +1
print(' ' * num_white + '*' * i) # Could be changed to .format but works
输出
Enter an odd number width: 13
Triangle:
*************
***********
*********
*******
*****
***
*
答案 3 :(得分:0)
我不认为你可以将它们集中在一起,因为它们不能在半空间之间放置字符。也许尝试在所有星星之间插入一个空格,这样你就可以更好地将它们居中并产生类似的东西。
* * * *
* * *
* *
*
而不是:
****
***
**
*