2015-09-28 32 views
1

我試圖計算兩個隨機數的最大公共分隔符,這裏是我的源代碼。引用顯示: TypeError: not all arguments converted during string formatting但實際上,我不打算做任何字符串格式。我應該如何改正它?在模塊中 - typeError:並非所有在字符串格式化過程中轉換的參數

def gcd(Num_1, Num_2): 
    c = (Num_1 % Num_2); 
    Num_1 = Num_2; 
    Num_2 = c; 
    if c != 0: 
     return gcd(Num_1, Num_2) 
    else: 
     return Num_1 

Num_1 = raw_input("a\n>"); 
Num_2 = raw_input("b\n>"); 

gcd(Num_1, Num_2); 
+0

檢查類型Num_1'和'Num_2'的'。 –

+0

我爲'Num_1'和'Num_2'輸入了兩個整數。 – Fingal

回答

1

當您使用raw_input()獲得的輸入,你串回來,所以Num_1Num_2是字符串,不是int,因此,當您使用它%,巨蟒假定其字符串格式化運算符,而不是模塊運算符,並且由於左側沒有格式,因此會出現錯誤。示例 -

>>> '1' % '2' 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: not all arguments converted during string formatting 

你應該輸入轉換爲int,你期待int。此外,還有交換元素(你正在嘗試用臨時變量做)在Python更簡單的方法 -

def gcd(Num_1, Num_2): 
    Num_1, Num_2 = Num_2, (Num_1 % Num_2) 
    if c != 0: 
     return gcd(Num_1, Num_2) 
    else: 
     return Num_1 

Num_1 = int(raw_input("a\n>")) 
Num_2 = int(raw_input("b\n>")) 

gcd(Num_1, Num_2) 
相關問題