2013-06-12 128 views
0

我目前正在編寫一個代碼,要求用戶輸入一個整數並計算整數所具有的除數。我已經完成了代碼,但卡住了「返回部分」。 這是我到目前爲止有:函數返回問題

def findDivisors(number): 
    decrease = number 
    count = 0 
    while (decrease >= 1): 
     if (number%decrease == 0): 
      count=count+1 
    decrease=decrease-1 

def main(count): 
    number = int(input("Please enter a positive integer : ")) 
    print(count) 

main() 

我試圖返回兩個「數字」和「數」,但似乎無法使它發揮作用。 有什麼建議嗎? 順便說一句,我使用Python 3.3.1

+0

您對底線的main調用與以前定義的任何函數都不匹配。你的findDivisors()函數會進入一個無限循環,因爲你減少了不在while循環內的變量;所以對於任何大於0的數字,都會發生無限循環。對於其他修復,請參閱@Simon的第一個答案 – smac89

回答

1
  1. 您在函數findDivisors()結束需要return count
  2. findDivisors()壓痕似乎是不正確的(decrease=decrease-1應縮進不亞於if聲明的第一行。
  3. 我不明白你爲什麼會想count作爲參數傳遞給main()功能的原因,尤其是當你調用main()不帶任何參數。
  4. 沒有從你已經證明,你實際上是在調用該函數findDivisors()代碼的證據。我建議用print(findDivisors(number))更換print電話。
+0

完美!感謝您的詳細解答。 – kiasy