python - 使用 for 循环将 header 添加到乘法表

标签 python for-loop iteration product

我正在制作一个产品表,用户提供输入以确定其大小。

各列标记为 A-Z 这些行由带有“|”的数字标记就在它旁边。

程序正确打印所有标题。唯一的问题是,产品表的打印次数与沿行输入的次数相同。

请参阅附图,了解我输入“3”的尝试。 图像上输入“4”的黑色产品表是答案的格式。

def get_pro_tab():
        n = int(input('Please enter a positive integer: '))
        print("(Don't go too crazy)")
        print()

        #letters
        print('  ',end='')
        for letter in range(n):
                print('{0:4}'.format(chr(65 + letter)),end=' ')
        print()
        #margins
        marigin = 0
        for number in range(1, n+1):
                print(str(number)+ "|", end='')
        #numbers
                prod = 0
                for y in range(1, n+1):
                        for z in range(1, n+1):
                                prod = y * z
                                print('{0:4}'.format(str(prod)), end=' ')
                        print('\n')

Attempted output and answer if the input was 4

最佳答案

我认为您的代码中只是多了一个循环。我刚刚将其注释掉,现在我认为它有效:

def get_pro_tab():
    n = int(input('Please enter a positive integer: '))
    print("(Don't go too crazy)")
    print()

    #letters
    print('  ',end='')
    for letter in range(n):
        print('{0:4}'.format(chr(65 + letter)),end=' ')
    print()
    #margins
    marigin = 0
    for number in range(1, n+1):
        print(str(number)+ "|", end='')
    #numbers
        prod = 0
        #for y in range(1, n+1):
        for z in range(1, n+1):
            prod = number * z
            print('{0:4}'.format(str(prod)), end=' ')
        print()

对于输入 5,打印:

  A    B    C    D    E    
1|1    2    3    4    5    
2|2    4    6    8    10   
3|3    6    9    12   15   
4|4    8    12   16   20   
5|5    10   15   20   25   

如果您愿意,您可以使用以下格式字符串让您的生活变得更加轻松:

def get_pro_tab():
    n = int(input('Please enter a positive integer: '))
    print("(Don't go too crazy)")
    print()

    #letters
    print('  ',end='')
    for letter in range(n):
        print('{0:>4s}'.format(chr(65 + letter)),end=' ')
    print()
    #margins
    marigin = 0
    for number in range(1, n+1):
        print(str(number)+ "|", end='')
    #numbers
        prod = 0
        #for y in range(1, n+1):
        for z in range(1, n+1):
            prod = number * z
            print('{0:4d}'.format(prod), end=' ')
        print()

如果您使用相同的输入运行此程序,您将得到:

     A    B    C    D    E 
1|   1    2    3    4    5 
2|   2    4    6    8   10 
3|   3    6    9   12   15 
4|   4    8   12   16   20 
5|   5   10   15   20   25 

好吧,我知道,情人眼里出西施,但对我来说,如果数字向右对齐,它看起来更有吸引力。但同样,这只是对代码的一个非常小的修改。

关于python - 使用 for 循环将 header 添加到乘法表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57171416/

相关文章:

python - Python requests.post 这么慢还是我做错了什么?

python - 使用 Tkinter 绑定(bind)传递额外参数

java - 动态设置 jTextField 值

javascript - Javascript SyntaxError : missing ; before statement (after for loop)

Java - 获取当前 JAR 中的文件名列表

python - 名称错误 : global name 'StudentForm' is not defined

python - Django 报错邮件 : env vars leak info

java - 如何计算 ArrayList 中多个重复元素的数量?

python - 如何迭代或递归确定二维数组中的邻居?

python - 在 Jython 中使用 OrderedDict