2017-03-05 26 views
3

環路我試圖創建一個用於創建N×N的的乘法表的程序。 賦值必須使用重複加法,而不是乘法函數。的Python反覆此外

這是我的代碼至今:

def main(): 
import math 
print('Hello!') 
n = (abs(eval(input("Enter n for the multiplication table n x n: ")))) 
n = int(n) 
a = 0 
for i in range(1,n+1): 
    for x in range(1,n+1): 
     a = i+a 
     print(i,' * ',x,' = ',a) 
main() 

它給了我這樣的輸出:

Hello! 
Enter n for the multiplication table n x n: 4 
1 * 1 = 1 
1 * 2 = 2 
1 * 3 = 3 
1 * 4 = 4 
2 * 1 = 6 
2 * 2 = 8 
2 * 3 = 10 
2 * 4 = 12 
3 * 1 = 15 
3 * 2 = 18 
3 * 3 = 21 
3 * 4 = 24 
4 * 1 = 28 
4 * 2 = 32 
4 * 3 = 36 
4 * 4 = 40 

輸出顯然是不正確,所以我能更改/添加修復計算?

+0

請請請,做*不*用'的eval(輸入(...))'。使用'INT(輸入()'在這種情況下, –

回答

5

你有一個變量a您的嵌套的內部對你在不斷的值,爲乘法表的不同值添加循環。而不是增加ia每次迭代,讓a = i*x。這會每次給你正確的乘法值。但是,如果你真的想反覆除了這樣做,設置a = 0外的第二個for循環的,但裏面的第一個,像這樣:

for i in range(1,n+1): 
    for x in range(1,n+1): 
     a = i+a 
     print(i,' * ',x,' = ',a) 
    a = 0 
+1

我建議在這種情況下使用'.format',它使事情更清潔:'打印(「{} * {} = {}」格式(I,。 X,ACC))' –

+0

這是我失蹤了,太謝謝你了! –

+0

不客氣! – UnknowableIneffable

0

對於打印語句嘗試使用,而不是:

print(i,' * ',x,' = ',i*x) 

我不能確定你使用的爲「A」的變量,但如果你想輸出我的乘法和X仍然使用,而不是讓你的代碼相同,只是改變你在你的窩有一個循環:

a = i*x 

希望這有助於!

+0

這工作,但對於分配,我不能用乘法功能,我必須使用重複添加。 –

+0

啊,如果是那樣的話,我還是跟着UnknowableIneffible的解決方案,因爲他涉及如何解決反覆另外的問題 –

0

在你的循環,你總是遞增變量「一個」本身添加到 '我每次都',而應該乘我* X

print("Hello!") 

n = input("Enter n for the multiplication table n x n: ") 
n = int(n) 

result = 0 

for i in range(1,n+1): 
    for j in range(1, n+1): 
     result = i*j 
     print(i," * ", j, " = ", result) 
+0

你爲什麼有'結果= 0'?它不再是必要的。 –