2017-11-17 41 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) 
    ]