2015-10-29 51 views
0

我有一個列表,其中包含一個單詞和三個不同的數字。我想找到一種方法來選擇這三個數字中最大的一個,但是每當我使用max函數時,它都會選擇該單詞。有沒有解決這個問題的方法?我的代碼如何在Python中使用數字和字符串查找列表中的最大數字?

部分去如下:

myList = list() 
userName1 = input('What is your name?') 
myList.append(userName1) 
score1 = input('User 1 score 1') 
myList.append(score1) 
score2 = input('User 1 score 2') 
myList.append(score2) 
score3 = input('User 1 score 3') 
myList.append(score3) 

print(max(myList)) 

對於這些,我輸入我的名字(雛菊)和三個數字(6,9和4)。我希望最大的功能會選擇9,但它打印菊花。

+0

你能張貼工作代碼示例? – Alex

+0

示例輸入和輸出到那將是很好 – The6thSense

+1

所以它實際上是所有字符串的列表,但一些字符串表示數字。 – khelwood

回答

0

未經檢驗的建議,以提高代碼的整體:

userName1 = input('What is your name?') 
scores = input('User scores, comma seperated') 
print("user %s has max score %d"%(userName1, max(map(scores.split(','),int)))) 
1

input()返回一個保存用戶輸入的字符串。您需要將字符串轉換爲整數(可以是整數),因此您可以創建這些數字的新列表並找到最大值。這是try...except條款的一個很好的用法:如果您嘗試將諸如'Daisy'之類的內容轉換爲數字,只需忽略(pass)即可得到的例外。

In [1]: myList = ['one', 1, 'foo', '4', '5', '2'] 

In [2]: numbers = [] 

In [3]: for item in myList: 
    ...:  try: 
    ...:   numbers.append(int(item)) 
    ...:  except ValueError: 
    ...:   # ignore items which aren't integers 
    ...:   pass 
    ...:  

In [4]: max(numbers) 
Out[4]: 5 

在你比較字符串值,這不會給你即使字符串可以轉換爲整數的最大需要的時刻(例如「10」是「小於」「9」)。

+0

在String to Int之後強制轉換'print(max([i for myList if isinstance(i,int)]))''更好的方法 –

+0

@AnkurAnand你試過了嗎......? – xnx

+0

是https://ideone.com/yTC3Iq –

相關問題