繁体   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