使用for循环在Python中创建倒置的星号三角形

2024-10-01 13:41:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我讨厌我不得不问这个,但我一辈子都不知道该怎么做。程序要求输入一个奇数整数,然后创建一个倒置的金字塔,第一行包含星号的数量作为数字,最后一行只有一个居中的星号。我已经设法解决了大部分问题,但不管我怎么努力,我的星号都拒绝居中排列。我已经看过其他类似的主题,并尝试使用它们,但仍然无法理解。我不知道为什么要用“我”,但在另一个帖子上看到它,它看起来比我以前的稍微好一点。在

这是我的代码,我对它做了很多修改,但是没有用。在

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):

^{pr2}$

我希望它看起来像(输入7)

*******
 *****
  ***
   *

Tags: 代码程序主题input数量数字整数星号
3条回答

除了将step值设置为-2,如果使用Python的string format方法,代码的可读性会更高。您可以使用居中对齐viz轻松地将星号居中。^{cd3}:

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))

审判:

^{pr2}$

您可以使用字符串格式执行更多操作。看看参考文献:https://pyformat.info

尝试类似于:

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))

这不仅适用于奇数。在

您需要将range的'step'设置为-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)

输出:

^{pr2}$

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:
 *************
  ***********
   *********
    *******
     *****
      ***
       *

相关问题 更多 >