2016-07-26 1 views
0
def get_highs(): 
    atlTemps = open("tempsAtlanta2015.txt") 
    highs = [] 
    highs = split_data(atlTemps, highs, 2) 
    atlTemps.close() 
    return highs 

def split_data(lst, lst2, num): 
    for i in lst: 
     data = i.split(",") 
     lst2.append(data[num]) 
    return lst2 

def main(): 
    highs = get_highs() 
    print(max(highs)) 
main() 

私はこれらの機能を私のメインプログラムから取り出してトラブルシューティングを行ったところ、max()の使用に問題があるようです。テキスト文書では、max()によって返される最も高い数値の情報を100にする必要がありますが、代わりに99が返されます.100をインデックスに登録して、100がリストに含まれていることがわかります。どんな助けでも大歓迎です!max()は100が私のリストの中で最高になるべきときに99を返す

はここで、テキストファイルの一部であり、情報は[month, day, high, low]

7,29,99,76 
7,30,98,76 
7,31,96,73 
8,1,93,71 
8,2,96,68 
8,3,98,71 
8,4,99,69 
8,5,100,71 
8,6,90,72 
… 
+1

私はインデントを修正しようとしましたが、あなたがダブルチェックしたいことそれ。 –

答えて

7

あなたは整数にあなたの整数の文字列表現に変換されていないとして格納されます。したがって、辞書編集的には'99' > '100'です。ここに見られるように:

>>> max(('99', '100')) 
'99' 

は、しかしint型に変換:

することができますあなたの split_data()機能で
>>> max((99, 100)) 
100 

def split_data(lst, lst2, num): 
    for i in lst: 
     data = i.split(",") 
     lst2.append(data[num]) 
    return [int(element) for element in lst2] 
+0

ああ、ありがとう!それは完璧な意味合いです! – Javajojoe

+0

@Javajojoeこの回答が問題を解決する場合は、チェックボックスをオンにします –

関連する問題