2016-11-04 83 views
-5

我想創建一個程序,允許用戶選擇他們想輸入的數字,然後比較用戶輸入的所有值,找到哪個最大的。由於某種原因,它似乎只是比較輸入的最後兩個值,我無法弄清楚我的邏輯出錯的地方。無法理解我的邏輯是什麼缺陷:

def number_of_inputs(): 
     n = input("how many n values would you like "); 
     values = []; 
     a = 0; 
     n = int(n); 
     for a in range (n): 
      c= int(input("Enter a value ")); 
      values.append(c); 
      a=a+1; 
     b = sum(values) 
     largest_num(values,n,b); 
def largest_num(values,n,b): 
    a = 0; 
    start = 0; 
    for start in range(n): 

     for a in range (n): 
       if((values[start])-(values[a])>0): 
        largest = values[start] 
        a = a+1; 

     print(largest); 
number_of_inputs(); 
+0

你能給一個更好的標題嗎?他們的目的是給用戶和想法的帖子,並吸引潛在的回答者... – Li357

+0

如果你希望我們幫助你理解你的邏輯有什麼問題,你至少應該試着解釋它,我們不會活在你的腦海裏...您也可以手動逐步查看代碼,找出爲什麼它無法按預期工作。 – Julien

+0

你有沒有試過調試你的代碼?最簡單的方法是添加一些打印語句,顯示代碼的工作狀態。不管你信不信,它都會學習調試的技巧,這意味着下次你不得不在SO上提出問題時,你就不會被低估。 – barny

回答

0

假設你只需要最大的號碼,刪除不需要的代碼。這裏不需要嵌套循環。更新你的函數:

def largest_num(values,n,b): 
    a = 0; 
    start = 0; 
    for i in range(n - 1): 
      if(values[i+1] > values[i]: 
       largest = values[i+1] 
      else: 
       largest = values[i] 
    print(largest) 

您可以實現相同的使用內置的max()爲:

>>> max([1, 5, 2, 10, 4]) 
10 
+1

你也不需要一行代碼:'max'只是做這個工作...... – Julien

+0

@JulienBernu:正在編輯。仍然感謝指點,以防萬一我錯過了;) –