【问题标题】:unsupported operand type(s) for /: 'str' and 'int' [duplicate]/ 不支持的操作数类型:“str”和“int”[重复]
【发布时间】:2011-11-29 07:43:01
【问题描述】:

我是 Python 新手,正在学习一些基础知识。我想知道为什么我会收到这个错误。代码是:

Hours = raw_input ("How many Hours you worked for today : ")
minutes = (Hours * 60)
Percentage = (minutes * 100) / 60
print "Today you worked : ", "percentage"

【问题讨论】:

    标签: python


    【解决方案1】:

    你必须将你的 Hours 变量转换为一个数字,因为 raw_input() 给你一个字符串:

    Hours = int(raw_input("How many hours you worked for today: "))
    

    之所以这么晚失败是因为* 是为字符串和int 定义的:它将字符串“乘以” int 参数。所以如果你在提示符下输入7,你会得到:

    Hours = '7'
    minutes = '777777....77777'        # 7 repeated 60 times
    Percentage = '77777....77777' / 60 # 7 repeated 60*100 = 6000 times
    

    所以当它尝试对一个字符串和一个数字执行/ 时,它最终失败了。

    【讨论】:

      【解决方案2】:

      您的值Hours 是一个字符串。要转换为整数,

      Hours = int(raw_input("How many hours you worked for today : "))
      

      Python 中的值具有特定的类型,虽然字符串可能只包含数字,但如果不告诉 Python 进行转换,您仍然不能将其视为数字。这与 Javascript、Perl 和 PHP 等其他一些语言不同,这些语言在需要时会自动转换类型。

      【讨论】:

      【解决方案3】:

      Hours 被读取为字符串。首先将其转换为整数:

      Hours = int(raw_input("..."))
      

      请注意,Hours*60 有效,因为它将 Hours 与自身连接 60 次。但这肯定不是您想要的,因此您必须第一时间转换为 int

      【讨论】:

        【解决方案4】:

        raw_input() 返回一个字符串。在继续之前将其转换为数字(因为 将字符串乘以一个整数是有效的操作)。

        【讨论】:

          猜你喜欢
          • 2013-12-24
          • 1970-01-01
          • 1970-01-01
          • 2020-05-25
          • 1970-01-01
          • 2013-08-18
          • 2022-07-27
          • 2016-04-15
          • 2012-11-29
          相关资源
          最近更新 更多