簡體   English   中英

每次迭代后如何在同一行打印for循環輸出

[英]how to print for loop output on same line after each iteration

#我的代碼。#

a = int(input("enter a no"))
b = int(input("enter a range"))
for i in range(1, a+1):
    print(i)

    for j in range(1, b + 1):
        c = i * j
        print(i, "*", j, "=", c)

##我想要這樣的輸出。 請幫我用一個簡單的方法來打印。##

在此處輸入圖片說明

您可以通過指定“end”參數來告訴 print 以換行符以外的其他內容結束:

a = int(input("enter a no "))
b = int(input("enter a range "))

for i in range(1, a+1):
    print(i, end="            ")
print("")

for j in range(1, b + 1):
    for i in range(1, a+1):
        c = i * j
        print(i, "*", j, "=", c, end="    ")
    print("")

在這種情況下,我將主循環拆分為兩個單獨的循環,第一個輸出具有較大間距的頂行 (1, 2, 3...),而第二個則以稍小的間距輸出所有其他循環。

我還切換了后面循環的順序,因為應該有b行,每行都有一個乘法,所以b循環需要是外部(第一個)循環。

在這兩種情況下,都使用空的打印語句在我們需要時輸出換行符。

方法

  • 方法是使用f-strings將所有打印件左對齊到寬度為 20 的字段中
  • 使用固定的字段寬度,否則列將不會與一位和多位數字對齊
  • 使用打印參數 end = '' 避免在打印字段后回車

代碼

a = int(input("輸入一個沒有")) b = int(input("輸入一個范圍"))

width = 20
for i in range(1, a+1):
    print(f'{i:<{width}}', end="")       # Print all multipliers on a single row
print("")

for j in range(1, b + 1):
    # Looping over multiplication row
    for i in range(1, a+1):         # Looping through the columns to multipl
        s = f'{i} * {j} = {i*j}'    # Expression for column field
        print(f'{s:<{width}}', end = '') # Print field left aligned to width 20
    print("")                       # New row

測試

enter a no 4
enter a range 10
1                   2                   3                   4                   
1 * 1 = 1           2 * 1 = 2           3 * 1 = 3           4 * 1 = 4           
1 * 2 = 2           2 * 2 = 4           3 * 2 = 6           4 * 2 = 8           
1 * 3 = 3           2 * 3 = 6           3 * 3 = 9           4 * 3 = 12          
1 * 4 = 4           2 * 4 = 8           3 * 4 = 12          4 * 4 = 16          
1 * 5 = 5           2 * 5 = 10          3 * 5 = 15          4 * 5 = 20          
1 * 6 = 6           2 * 6 = 12          3 * 6 = 18          4 * 6 = 24          
1 * 7 = 7           2 * 7 = 14          3 * 7 = 21          4 * 7 = 28          
1 * 8 = 8           2 * 8 = 16          3 * 8 = 24          4 * 8 = 32          
1 * 9 = 9           2 * 9 = 18          3 * 9 = 27          4 * 9 = 36          
1 * 10 = 10         2 * 10 = 20         3 * 10 = 30         4 * 10 = 40    

這就是你要找的:

a = int(input("enter a no"))
b = int(input("enter a range"))

for i in range(1, a + 1):
    print(i, end="\t"*4)
print("")

for k in range(1, b + 1):
    for j in range(1, a + 1):
        print(j, "*", k, "=", j*k, end="\t"*2)
    print("")

您必須逐行考慮,因為您無法返回標准輸出。

  • 第一個 for 將填充第一行
  • 我修改了你的嵌套循環,因為你使用了錯誤的變量
  • “/ t”旨在獲得體面的格式,但如果數字太大,它最終會中斷:我相信有一種我不知道的提余方法
  • print("") 只是為了轉到下一行

我是這樣糾正的。 感謝大伙們。 只需添加 end="\\t"*4 即可解決對齊問題。

a = int(input("enter a no "))
b = int(input("enter a range "))

for i in range(1, a+1):
    print(i, end="\t"*4)
print("")

for j in range(1, b + 1):
    for i in range(1, a+1):
        c = i * j
        print(i, "*", j, "=", c, end="\t"*2)
    print("")

暫無
暫無

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

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