2014-10-17 54 views
-1

我應該寫一個循環程序,讓用戶輸入一系列整數,然後用-99指示系列結束。所有數字輸入後,程序應顯示輸入的最大和最小數字。Python:循環前哨值

這是我到目前爲止有:

def main(): 
    user_input = 1 
    while user_input != -99: 
     user_input = int(input("Enter your number or -99 to end.")) 
     bigger = largest(user_input) 
     tinier = smallest(user_input) 
    print('The largest number is ', bigger, "and the smallest is ", tinier, ".")  

def largest(number): 
    largest = 0 
    if number > largest: 
     largest = number 
     return largest 

def smallest(number): 
    smallest = 10000 
    if number < smallest: 
     smallest = number 
     return smallest 


main() 

出於某種原因,定點值(-99)的進入循環,我不知道怎麼了,成爲最小的值。最重要的是,最大的價值永遠都不是正確的。非常感謝!

+4

當然是了。你接受輸入,檢查越來越小,然後*檢查'while'循環的下一次迭代。 – CoryKramer 2014-10-17 19:11:25

+1

您每次調用相同名稱的函數時,也會重置*'最小'和'最大'變量。這些局部變量在每次函數退出時被清除。 – 2014-10-17 19:12:30

+0

除了這兩個問題之外,如果新數字是'> 0'或'<10000',那麼你也只能做'返回最大'或'最小返回';否則你沒有'return'語句,因爲它是在'if'下縮進的,所以你會返回'None'。這並不是說這個問題很重要,除非你解決了以前的問題,但是一旦你解決了這個問題,你也需要解決這個問題。 – abarnert 2014-10-17 19:19:47

回答

0

最快的變化,使你的代碼來解決,這將是

def main(): 
    user_input = 1 
    while user_input != -99: 
     user_input = int(input("Enter your number or -99 to end.")) 
     if use_input == -99: 
      break 
     bigger = largest(user_input) 
     tinier = smallest(user_input) 
    print('The largest number is ', bigger, "and the smallest is ", tinier, ".") 

的問題是,如果用戶輸入-99,你完成了線的其餘部分循環的該迭代。它將不會終止while循環,直到下一次,但它已經在該點執行了largestsmallest,因此它已被覆蓋。

0

就我所見,您有兩個問題:您的輸入正在被檢查之前處理,並且您的largest()smallest()函數中存在問題。當您掃描用戶輸入時,您在驗證之前立即進入您的功能。調整你的循環是這樣的:

input() 
while(){ 
    ... 
    ... 
    input() 
} 

對於第二部分,你的功能不工作,因爲你初始化每次運行時的值。在文件頂部的標題中初始化函數,然後比較它們。因此,例如,將行largest=0移至文件的頂部,位於導入語句的下方。除此之外,我認爲它應該工作。

0

你縮進在Python重要,這樣你的最小值和最大值函數返回說法是不正確的縮進

def largest(number): 
    largest = 0 
    if number > largest: 
     largest = number 
    return largest 

def smallest(number): 
    smallest = 10000 
    if number < smallest: 
     smallest = number 
    return smallest 
0

很簡單,如果你使用一個列表來存儲數字和依靠最大值/最小值功能來自標準庫:

def main(): 
    numbers = [] 
    while True: 
    user_input = int(raw_input("Enter a number")) 
    if user_input == -99: 
     break 
    else: 
     numbers.append(user_input) 
    print('Largest is {}, smallest is {}'.format(max(numbers), min(numbers)))