2016-07-28 5 views
0

私はCSVファイルからデータを読み込む小さなプログラムを開発中です。プログラムの一環として、ユーザー入力は> =のデータのみを選択するために使用されますが、TypeError:unorderable types:str()> = int()コードを実行します。スティングが整数に変換されていないように見えます。Python 3のint()関数が入力文字列を整数に変換しない

def get_csv_data(data_type, num): 
    import csv 
    ga_session_data = {} 
    ga_pageviews_data = {} 

    with open('files/data.csv', 'r') as csvfile: 
     reader = csv.reader(csvfile) 
     for row in reader: 
      page, sessions, pageviews = row 
      ga_session_data[page] = int(sessions) 
      ga_pageviews_data[page] = int(pageviews) 

     if data_type == 'sessions' and sessions >= int(num): 
      for page, sessions in ga_session_data.items(): 
       print(page, ' - ', sessions) 

     elif data_type == 'pageviews' and pageviews >= int(num): 
      for page, pageviews in ga_pageviews_data.items(): 
       print(page, ' - ', pageviews) 

def main(): 
    while(True): 
     question = input("Are you interested in sessions or pageviews?") 

     if question == 'sessions': 
      number = int(input("What range are you interested in?")) 
      get_csv_data(data_type = 'sessions', num = int(number)) 

     elif question == 'pageviews': 
      number = input("What range are you interested in?") 
      get_csv_data(data_type = 'pageviews', num = int(number)) 

     else: 
      print("Invalid Input. Choose between sessions and pageviews.") 
main() 
+2

'sessions> = int(num)'では、文字列( 'sessions')とintを比較しています。 –

+0

同じことがページビュー数=> int(num) –

答えて

3

intは、インプレース整数にそのパラメータをキャストしないありません。実際、これらのパラメータは不変です。

int(sessions)正確にはと思われることをしてください。 sessionは変更されませんが、その呼び出しの戻り値はintです。あなたは同じ/新しい名前に返された値を割り当てる必要があります

:彼らは今、両方の整数であるため、オペレータ>=

sessions = int(sessions) 
pageviews = int(pageviews) 

は今、あなたが持っている2つの変数を比較することができます。


はまた、そうのようなものifブロックを書き換える必要があります。このように

if data_type == 'sessions': 
    for page, sessions in ga_session_data.items(): 
     if sessions >= int(num): 
      print(page, ' - ', sessions) 

、あなたが実際にセッションがforループからのセッションを辞書にカウントしていないチェックしています。

+0

ありがとうございます。私はそれを変更し、エラーが消え去ったが、何らかの理由で数字を入力した後に何も返されない – user3088202

+0

@ user3088202しかしあなたはあなたの関数で何かを返すわけではないのですか? –

+0

申し訳ありませんが、Pythonの学習を始めました。主な機能やget_csv_dataについて話していますか? – user3088202

関連する問題