如何在每次迭代后在同一行打印循环输出

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 行,每行都有 a 乘法,所以 b 循环需要是外(第一个)循环。

在这两种情况下,我们都使用空打印语句在需要时输出换行符。

接近

  • 方法是使用 f-strings 将所有打印件左对齐到宽度为 20
  • 的字段中
  • 使用固定的字段宽度,否则列将不会与一位和多位数字对齐[=29​​=]
  • 使用打印参数 end = '' 避免在打印字段后出现回车 returns

代码

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