我怎样才能实现这一点?我正在尝试有一个输入,它将使用 python 按顺序打印出所有数字



所需输出这就是我想要的输出。

我现在拥有的。

rows = int(input("Please Enter a Number  : "))
for I in range(1, rows + 1):
for j in range(1, I + 1):
print('*', end = '  ')
print()

但这就是我想要的输出

Enter any number : 21
Output
1
2 3
4 5 6
7 8 9 10
11 12 13 14 15
16 17 18 19 20 21

直角三角形输出的东西。

它把我逼疯了。请帮助:(感谢期待

忽略三角形部分,第一步是打印所有数字:

rows = int(input("Please Enter a Number  : "))
for num in range(1, rows + 1):
print(num, end=" ")

如果我们的号码是,我们想从那里添加一个if来打印新行

  • 等于"rows",或
  • 我们期望达到当前水平末尾的数字

由于每行中的项目数是一个算术级数(即,每个级别比其上的级别长+1(,我们可以使用算术级数的求和公式计算每个级别末尾的数量:

number_at_end_of_level = level * (level + 1) / 2

这个公式的简单解释是,通过对第一个和最后一个级别average = (level + 1) / 2求平均值,可以得到每个级别中的平均项目数。因为我们知道平均值,所以我们可以将其乘以级数,得到总数。

因此,将所有这些放在一起,解决方案是:

rows = int(input("Please Enter a Number  : "))
level = 1
for num in range(1, rows + 1):
print(num, end=" ")
number_at_end_of_level = level * (level + 1) / 2
if num == number_at_end_of_level or num == rows:
level += 1
print()

或者,如果你不想进行计算,你可以计算出你在当前级别打印了多少项目,并在该计数等于当前级别编号时打印新行:

rows = int(input("Please Enter a Number  : "))
level = 1
current_level_count = 0
for num in range(1, rows + 1):
print(num, end=" ")
current_level_count += 1
if current_level_count == level or num == rows:
level += 1
current_level_count = 0
print()

Hellor,这是您的问题的解决方案

rows = int(input("Please Enter a Number  : "))
count = 1
number = 1
while number <= rows:
for i in range(count):
print(number, end=" ")
number += 1
count += 1
print("n", end="")

因为你总是需要每行加一个数字你需要一个变量来存储数字的数量以进行打印(此处为count(。您还需要一个变量来计算当前数字为count的每次迭代递增(此处为number(并且只有当电流数字大于输入(此处为rows(

最新更新