2014-04-01 33 views
0

我的代碼生成隨機數加權是獲取Nonetype()<= INT()

但是,我發現了一個錯誤

output expected .05 output received .06 

問題是與eval_autograder(N),但如何能在修復這個顯示直方圖?

+2

你使用Python 2.7還是Python 3.x?您已經使用了兩個標籤,但它們的行爲卻非常不同。您還必須在某處調用此函數,但不顯示該代碼。需要更多信息。 –

+0

@MatthewTrevor plz看到了變化。我正在使用Python 3 – user3486852

+1

回溯還應該顯示錯誤發生在哪一行,您是否也可以包含該錯誤? –

回答

3

這裏是無來源:

>>> 100 in range(95,100) 
False 
>>> 
+0

但我該如何顯示直方圖?我需要4條從最小(0.69)到最高(90,100) – user3486852

+0

現在我得到錯誤輸出預期:D 0.05收到的輸出:D 0.06 – user3486852

0

有你的隨機數的範圍,你在你的ifelif語句測試範圍之間的不匹配。 random.randint在其參數之間生成一個隨機數,包括兩個端點。另一方面,range包含其起始值,但不包含其最終值。

randint生成數字100時,它將不會被您的if s檢測到,所以您會掉到該函數的底部,Python將返回None。這就是爲什麼你稍後在代碼中出現錯誤。

作爲快速修復,請使用random.randrange而不是random.randint。這會在0-99範圍內生成一個隨機數,這是您的代碼檢查的內容。

進一步改善可能是不使用range可言,因爲你可以簡單地做低於比較,達到同樣的效果:

def autograder(): 
    i = randrange(0,100) # changed function here, generates numbers 0-99 
    if i < 45: 
     return randint(90,100) 
    elif i < 80: 
     return randint(80,89) 
    elif i < 95: 
     return randint(70,79) 
    else: # this catches i < 100, but we don't need to specify it exactly 
     return randint(0,69) 

我離開的返回值,因爲他們,但你可能如果您不希望返回值包括0100,也希望將第一個randint更改爲randrange(或者只是調整邊界)。

+0

我將如何修復直方圖呢?就像我將如何顯示直方圖? – user3486852

+0

這聽起來像一個不同於你最初問的問題。恐怕我不太瞭解Python的繪圖庫能夠幫助解決你的問題。 – Blckknght

相關問題