【问题标题】:Python 3 int() function is not converting input string to integerPython 3 int() 函数未将输入字符串转换为整数
【发布时间】:2016-07-29 01:23:15
【问题描述】:

我正在开发一个从 CSV 文件中读取数据的小程序。作为程序的一部分,用户输入仅用于选择 >= 但我在运行代码时得到 TypeError: unorderable types: 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()

【问题讨论】:

  • sessions >= int(num) 中,您将字符串 (sessions) 与 int 进行比较。
  • 浏览量也是如此 >= int(num)

标签: python int


【解决方案1】:

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 循环中的会话数。

【讨论】:

  • 谢谢。我更改了它,错误消失了,但由于某种原因,我输入数字后没有返回任何内容
  • @user3088202 但是你没有在你的函数中返回任何东西?
  • 抱歉刚开始学Python。你说的是主函数还是get_csv_data
  • get_csv_data。你期待什么输出?
  • 页面名称和会话/浏览量。基本上,拉出所有页面名称和会话总数 >= 某个数字的会话
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-10
  • 1970-01-01
  • 2021-03-07
  • 2012-11-04
  • 1970-01-01
相关资源
最近更新 更多