2016-07-28 44 views
0

我正在研究一個從CSV文件中讀取數據的小程序。作爲程序的一部分,用戶輸入僅用於選擇數據> =但我得到TypeError:無法訂購的類型:str()> = int()當我運行代碼。看起來st不是轉換爲整數。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) 

操作>=現在可以比較你有兩個變量,因爲他們現在都是整數。


您可能還需要重寫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