2013-11-15 120 views
-5

我被要求寫一個程序,接受來自用戶10,只有整數和正數(大於0),並打印最大值。問題與無效文字爲int()與基地10

我寫了很多程序,給了我從用戶插入的10個最大數量,但是當我輸入負數時,它也給了我最大的數,這是錯誤的,當我把浮點數,它帶有錯誤

invalid literal for int()with base 10 

任何建議來編寫一個正確的程序?

+4

你能告訴我們你的代碼?就像你已經寫的代碼一樣?如果用戶輸入負數,你想怎麼做? –

回答

0

這裏有一些代碼可以完成你所要求的功能。但是,在負數或非整數輸入的情況下,您想要編碼的內容有點不清楚。我只是把一個Exception

def find_max(my_list): 
for x in my_list: 
    if x<0 or type(x) != int: 
    raise Exception("You must input positive integers!") 
print max(my_list) 
2

「無效的文字」錯誤是說:‘我不明白你鍵入的內容’的INT()的方式。 int()函數只能理解數字(在不同的基數/計數系統中,請參閱python int() doc)。

如果你想「保護」 agains用戶逗號的數字輸入,它包像這樣:

int(float(userinput)) 

這將首先使用戶輸入一個小數號碼,然後進入一個int。 請注意,float()對「」,「與」是挑剔的。「

float("3.4") # gives 3.4 
float("3,4") # throws "ValueError: invalid literal for float(): 3,4" 

測試如果數是負的可以通過檢查來事後parsedNumber> = 0 它在數學上完全有效的詢問關於「-1的最高數量,-2和-3」,所以python內置插件不會爲你做。您必須手動添加嚴格的標準(見@ AlexChumley的答案。)

max(-1, -2, -3) 

返回-1,在「最高」數,其中「最高」的意思是「最接近正無窮大」

+1

+1深度比我願意去的質量問題 –

+0

謝謝;我同意質量,但我希望文件鏈接是一個很好的教學資源:-) –

相關問題