2016-09-11 31 views
0

我想通過Courser上的一門課程來學習Python,到目前爲止我有一種感受,我無法做到。Python Coursera Assignement

我不想回答的分配,我想有人把我推在正確的方向。因爲Im卡住了,在線輔導人員沒有任何幫助,只是重複已經在作業中陳述的明顯內容。這項任務非常簡單,但我無法理解我錯過了什麼。

這是作業: 編寫一個程序,該程序會重複提示用戶輸入整數,直到用戶輸入'done'。輸入完成後,打印出最大和最小的數字。如果用戶輸入除有效數字以外的任何內容,則嘗試/除外,並輸出適當的消息並忽略該數字。輸入問題5.1的書中的數字,並匹配所需的輸出,如圖所示。

這裏是我的代碼,我嘗試使用示例代碼我們在哪裏顯示獲取最小和最大值,但問題是在我們有他們有列表的例子中,在這裏我被告知我不需要一個列表。但是每次num的值都會隨着新的輸入而改變,如何讓程序從某些數字中選擇,如果它們沒有存儲...或者你認爲我可以在raw_input中輸入列表嗎?

while True: 
    inpt = raw_input("Enter a number: ") 
    if inpt == "done" : break 

    try: 
     num = int(inpt) 
    except: 
     print "Invalid input" 
    continue 

largest = None 
if largest is None: 
    largest = num 
elif num > largest: 
    largest = num 

smallest = None 
if smallest is None: 
    smallest = num 
elif num < smallest: 
    smallest = num 

print "Maximum is", largest 
print "Minimum is", smallest 

從書中的數字是4,5,7和字

謝謝大家的支持,我明白我必須做的,不知道如果我明白,我怎麼會到那裏,但我會坐下來繼續嘗試。同時我得到的問題與壓痕 比方說我改寫這樣的代碼,並希望if語句添加到while循環

largest = None 
smallest = None 

while True: 
    inpt = raw_input("Enter a number: ") 
    if inpt == "done" : break 

    try: 
     num = int(inpt) 
    except: 
     print "Invalid input" 
    continue 

應該if語句開始使用相同的縮進繼續,然後裏面如果再次縮進?由於即時得到錯誤,當我做到這一點

+0

當然,你需要以某種方式存儲數字,你沒有做什麼。請閱讀它們並將它們插入列表中。你認爲目前的形式在你的最小 - 最大值計算中發生了什麼?過去的信息在哪裏? **或者:**只是使用兩個變量,一個用於最小值,一個用於最大值,並更新這些用於每個輸入(=迄今爲止最低的觀測值,最高...)!這些更新在while循環內! – sascha

+0

有信心,年輕的巫師。所有強大的來源者一開始都是通過弄錯他們的咒語和他們的坩堝爆炸。不要因爲一些啞巴法術而放棄魔法。 –

回答

0

我想通了,我認爲,那是殺了我的代碼的東西是continue語句,如果我沒看錯的

這裏是我找來的,請發表評論,如果我聽錯了

largest = None 
smallest = None 

while True: 
    inpt = raw_input("Enter a number: ") 
    if inpt == "done" : break 

    try: 
     num = int(inpt) 
    except: 
     print "Invalid input" 

    if largest is None: 
     largest = num 
    elif num > largest: 
     largest = num 

    if smallest is None: 
     smallest = num 
    elif num < smallest: 
     smallest = num 

print "Maximum is", largest 
print "Minimum is", smallest 
0

您應該檢查循環內的最大和最小的數字。首先檢查它是否是一個數字 - 如果是,繼續,看看它是否大於你當前的largest變量值(從0開始)。如果是,請更換它。如果它的值小於smallest的值(從第一個數字開始,如果你從0開始或者只是一個隨機數字開始,那麼你可能不會低於這個數字)如果你從第一個數字開始,那麼它會肯定是最小的(畢竟循環))等,等等。所有這些都應該在循環內完成,循環之後應該只是打印。是的,你不需要使用列表。

1

你是在正確的軌道與當前實現的,但有一些問題在你操作的順序,並在操作正在發生。一步一步跟蹤程序,並嘗試瞭解爲什麼您的None任務可能會導致一些問題,以及其他一些小問題。

0

讓我在這裏給你一個提示,每當你的while循環接受一個輸入時,它將largestsmallest的值設置爲None。你應該在哪裏初始化它們?

1

你被要求保持運行max和運行分鐘,你可以繼續運行總以同樣的方式。您只需在循環內更新運行的任何> <,然後放棄用戶最近的輸入。在運行總計的情況下,代碼將看起來像tot = tot + newinput,然後您可以放棄newinput(或更有可能重新使用它),而不將其記錄在列表或任何其他數據結構中。

並非所有問題都允許「運行」解決方案。例如,如果你想給用戶一個撤銷功能,讓他們退出他們之前輸入的一些數字,你將不得不保留所有數字的確切歷史記錄。但是,在這裏,你可以不用保存這些數據。

0

我覺得你的困惑部分來自於用戶期望輸入的方式。人們可以用兩種方式解釋說明。

  1. 用戶寫入4 5 7 randomword [ENTER]

  2. 用戶寫入4 [ENTER] 5 [ENTER] 7 [ENTER] randomword [ENTER]

如果是第一種變體,那麼你可以預料到處理整個事情的清單並確定其零件

但是,他們告訴你「你不需要此練習的列表」這一事實意味着他們期望第二種情況。這意味着你應該設計你的while循環,以便在每次迭代時,它期望從用戶那裏接收一個單一的輸入,並對它做一些事情(即檢查它是否比上一次更大/更小)。而現在的循環,將始終保持輸入的最後輸入,直到遇到「完成」。

一旦你退出while循環,你所需要做的就是呈現你仔細收集並在循環內保持更新的變量,就是這樣。