簡體   English   中英

Python 3 int()函數未將輸入字符串轉換為整數

[英]Python 3 int() function is not converting input string to integer

我正在研究一個從CSV文件讀取數據的小程序。 作為程序的一部分,用戶輸入僅用於選擇> =的數據,但在運行代碼時出現TypeError:不可排序的類型:str()> = 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()

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循環中的會話。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM