簡體   English   中英

我怎樣才能做到這一點? 我正在嘗試使用 python 按順序打印所有數字的輸入

[英]how can i achieve this ? I'm trying to have an Input that will print out all the numbers in sequential order using python

所需的 Output這就是我希望我的 output 成為的樣子。

我現在擁有的。

rows = int(input("Please Enter a Number  : "))

for I in range(1, rows + 1):

    for j in range(1, I + 1):

        print('*', end = '  ')

    print()

但這就是我想要的 output

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

直角三角形 output 東西。

它讓我發瘋。 請幫助:)謝謝期待

您好,這是您的問題的解決方案

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

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

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

從那里我們想添加一個if來打印一個新行,如果我們的號碼是

  • 等於“行”,或
  • 我們期望在當前級別結束時的數字

由於每行中的項目數是一個算術級數(即每個級別比它上面的級別長+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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM