生成图表(python循环)

时间:2017-03-18 16:42:36

标签: python for-loop input charts

用户应该能够输入他们想要做的时间稳定的图表,然后程序将生成一个布局合理的图表。它不应该允许用户输入低于1的数字。它应该询问他们是否想要再做一次timestables图表。请注意,您应该是嵌套循环。密切注意格式化。

Example input/output


What timestables do you want to do? 5

    1   2   3   4   5   
    ----------------------------------
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  

Do you want to do another timestables chart (y for yes)? y

What timestables do you want to do? -3

Not a valid number.
What timestables do you want to do? 7

    1   2   3   4   5   6   7   
    --------------------------------------------------
1 * 1   2   3   4   5   6   7   
2 * 2   4   6   8   10  12  14  
3 * 3   6   9   12  15  18  21  
4 * 4   8   12  16  20  24  28  
5 * 5   10  15  20  25  30  35  
6 * 6   12  18  24  30  36  42  
7 * 7   14  21  28  35  42  49  

Do you want to do another timestables chart (y for yes)? nooo

Hope you got smarter!

我正在尝试编写一个代码来使输出看起来像上面那样,但我完全不知道该做什么。在底部是我现在所拥有的,我想知道是否有人可以帮助我弄清楚如何编写此代码。谢谢

column = int(input("What timestables do you want to do? "))
for x in range(1, column+1):
    print(x, sep="\t")

3 个答案:

答案 0 :(得分:1)

这应该正确地生成表格的主要部分,但是如果你试图用大数字打印一个时间稳定的话会很麻烦(不知道为什么你会:-))

size = int(input("Please enter the size of the table: "))
# list comprehension to make 2d list
arr = [[i for i in range(1, size+1)] for j in range(size)]
# this multiplies all the numbers in the 2d list so they can be printed later
for i in range(len(arr)):
    for j in range(len(arr[i])):
        arr[i][j] = (i+1)*(j+1)
# print list
for i in range(len(arr)):
    print(str("{:2.2g}".format(i+1)) + " * " + str("{:2.2g}".format(i+1)) + "  ", end="")
    for j in range(len(arr[i])):
        print(str("{:2.2g}".format(arr[i][j])) + " ", end="")
    # newline
    print()

重要的部分是str("{:2.2g}".format(i+1))。它将小数格式化为2个位置,g删除零。查看Python Decimals format

答案 1 :(得分:0)

您可以将end=参数传递给print函数。通常print会将\n添加到最后。对于您的情况,传递标签是一个不错的选择:

print(x, end='\t')

答案 2 :(得分:0)

默认情况下,打印功能会添加"\n"。您可以更改传递参数, end =""), end ="\t")。检查link这可能会有所帮助。