2017-11-17 83 views
-1

我是python编程和学校的新手,我必须对乘法表从1到10进行模拟。这需要在矩阵中。在矩阵中创建Y * Z而不是行(在Python 2.7.14中)

我写的代码是:

for y in range(1, 11): 
    for z in range(1, 11): 
    print y*z 

然而,当我尝试运行此,这一切都在一条线下来,而不是一个矩阵...我已经找了个awnser和在Python 3.0或更高,他们有“end =”命令,但我不能使用这个,所以我想知道如何解决2.7.14中的这个问题。

+0

看到,因为这是一所学校的功课,我不会给你一个完整的回答你的问题。但是我建议你查看列表,然后你可以将矩阵的每一行都列出一个列表,然后依次列出每个列表。这里可能是一个开始的好地方:https://www.tutorialspoint.com/python/python_lists.htm – Tim

+0

矩阵你的意思是一个具有两个维度的显示或像矩阵形状的数据结构? –

+0

如果您的问题得到解答,请不要忘记[投票并接受答案](https://stackoverflow.com/help/someone-answers)。谢谢 –

回答

2

你已经完成了大部分的繁重工作,所以你需要的仅仅是一两步。请记住,你一个换行符

  • 单独的行需要在一行行的

    1. 打印元件

    可以备份端口使用from __future__ import print_function,给您python3的print语句您正在寻找的功能。

    from __future__ import print_function 
    
    for y in range(1, 11): 
        for z in range(1, 11): 
         print(y * z, end='\t') # 1 
    
        print() # 2 
    
    1 2 3 4 5 6 7 8 9 10 
    2 4 6 8 10 12 14 16 18 20 
    3 6 9 12 15 18 21 24 27 30 
    4 8 12 16 20 24 28 32 36 40 
    5 10 15 20 25 30 35 40 45 50 
    6 12 18 24 30 36 42 48 54 60 
    7 14 21 28 35 42 49 56 63 70 
    8 16 24 32 40 48 56 64 72 80 
    9 18 27 36 45 54 63 72 81 90 
    10 20 30 40 50 60 70 80 90 100 
    

    如果你不能做一个未来的导入,可以使用print有尾随逗号,压制被打印出来一个换行符。

    for y in range(1, 11): 
        for z in range(1, 11): 
         print y * z, '\t', 
        print 
    

    作为替代方案,你可以计算出每个数字出存储在一个列表中,最后打印一切结尾:

    v = [[y * z for z in range(1, 11)] for y in range(1, 11)] 
    for r in v: 
        print('\t'.join(map(str, r))) 
    

    这里,map每个元素转换的子将r列入字符串,然后str.join将所有内容拼接在一起。请注意,步骤map是必需的,因为如果您没有向其传递字符串迭代,str.join会引发错误。

  • 0

    您可以创建矩阵使用Python列表理解这样

    multiplication_table = [ 
        [y*z for z in range(1, 11)] for y in range(1, 11) 
    ]