python中的乘法表不起作用

2024-09-27 02:18:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我想写一个乘法表程序。我的问题是程序无法打印到右侧

程序将要求用户启动和停止。例如:

    start_number = 2
    stop_number = 4

输出应如下所示:

2 x 1 = 2    3 x 1 = 3    4 x 1 = 4
2 x 2 = 4    3 x 2 = 6    4 x 2 = 8
2 x 3 = 6    3 x 3 = 9    4 x 3 = 12
2 x 4 = 8    3 x 4 = 12   4 x 4 = 16
2 x 5 = 10   3 x 5 = 15   4 x 5 = 20
2 x 6 = 12   3 x 6 = 18   4 x 6 = 24
2 x 7 = 14   3 x 7 = 21   4 x 7 = 28
2 x 8 = 16   3 x 8 = 24   4 x 8 = 32
2 x 9 = 18   3 x 9 = 27   4 x 9 = 36
2 x 10 = 20  3 x 10 = 30  4 x 10 = 40
2 x 11 = 22  3 x 11 = 33  4 x 11 = 44
2 x 12 = 24  3 x 12 = 36  4 x 12 = 48

这是我的代码:

start = int(input("Enter start number : "))
stop = int(input("Enter stop number : "))
def multi_num(start,stop):
    for i in range(start, stop+1):
        for j in range(1, 13):
            print("%d x %d = %d" % (i, j, i * j))
multi_num(start, stop)

这是我的输出:

2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
2 x 10 = 20
2 x 11 = 22
2 x 12 = 24
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
3 x 4 = 12
3 x 5 = 15
3 x 6 = 18
3 x 7 = 21
3 x 8 = 24
3 x 9 = 27
3 x 10 = 30
3 x 11 = 33
3 x 12 = 36
4 x 1 = 4
4 x 2 = 8
4 x 3 = 12
4 x 4 = 16
4 x 5 = 20
4 x 6 = 24
4 x 7 = 28
4 x 8 = 32
4 x 9 = 36
4 x 10 = 40
4 x 11 = 44
4 x 12 = 48

我尝试使用end=" ",但它不起作用-程序在一行中打印输出:

2 x 1 = 22 x 2 = 42 x 3 = 62 x 4 = 82 x 5 = 102 x 6 = 122 x 7 =  142 x 8 = 162 x 9 = 182 x 10 = 202 x 11 = 222 x 12 = 243 x 1 = 33 x 2 = 63 x 3 = 93 x 4 = 123 x 5 = 153 x 6 = 183 x 7 = 213 x 8 = 243 x 9 = 273 x 10 = 303 x 11 = 333 x 12 = 364 x 1 = 44 x 2 = 84 x 3 = 124 x 4 = 164 x 5 = 204 x 6 = 244 x 7 = 284 x 8 = 324 x 9 = 364 x 10 = 404 x 11 = 444 x 12 = 48

Tags: 代码用户in程序numberforinputrange
2条回答

请尝试以下代码:

start = int(input("Enter start number : "))
stop = int(input("Enter stop number : "))
def multi_num(start,stop):
    for j in range(1, 13):
        line = ['{} X {} = {}'.format(n, j, n*j) for n in range(start,stop+1)]
        print('\t'.join(line))
multi_num(start, stop)

I tried to use end=" " but it's not working

不过它确实可以工作:end=" "将抑制默认情况下使用的换行符,因此没有换行符=>;一切都在同一条线上。它做的正是它应该做的

实际的问题是,你是按列思考,但终端是一行一行地工作的:你打印一行,转到下一行,打印下一行,…,就像磁带或打字机一样(原来的计算机IO是一台加大功率的打字机用于输入,一台行打印机用于输出)

您可以通过列生成输出,然后在打印前将列粘贴在一起,或者将终端切换到原始模式,并将终端作为a TUI管理

但最简单的解决方案是围绕终端想要什么而不是期望什么来思考,并执行逐行生成:切换两个循环,使每个i用于每个j,生成一个完整的行,然后在进入下一个j之前添加新行:

start = int(input("Enter start number : "))
stop = int(input("Enter stop number : "))
def multi_num(start,stop):
    for j in range(1, 13):
        for i in range(start, stop+1):
            print(f"{i} x {j} = {i*j}", end='\t')
        print()
multi_num(start, stop)

结果:

Enter start number : 2
Enter stop number : 5
2 x 1 = 2   3 x 1 = 3   4 x 1 = 4   5 x 1 = 5   
2 x 2 = 4   3 x 2 = 6   4 x 2 = 8   5 x 2 = 10  
2 x 3 = 6   3 x 3 = 9   4 x 3 = 12  5 x 3 = 15  
2 x 4 = 8   3 x 4 = 12  4 x 4 = 16  5 x 4 = 20  
2 x 5 = 10  3 x 5 = 15  4 x 5 = 20  5 x 5 = 25  
2 x 6 = 12  3 x 6 = 18  4 x 6 = 24  5 x 6 = 30  
2 x 7 = 14  3 x 7 = 21  4 x 7 = 28  5 x 7 = 35  
2 x 8 = 16  3 x 8 = 24  4 x 8 = 32  5 x 8 = 40  
2 x 9 = 18  3 x 9 = 27  4 x 9 = 36  5 x 9 = 45  
2 x 10 = 20 3 x 10 = 30 4 x 10 = 40 5 x 10 = 50 
2 x 11 = 22 3 x 11 = 33 4 x 11 = 44 5 x 11 = 55 
2 x 12 = 24 3 x 12 = 36 4 x 12 = 48 5 x 12 = 60 

相关问题 更多 >

    热门问题