不支持的操作数类型/:'str'和'int'

5

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

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

7

您需要将变量Hours转换为数字,因为raw_input()会给您提供一个字符串:

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

这个错误在程序运行到最后阶段才出现的原因是因为 * 被定义为对于字符串和整型来说都有意义:它会将字符串与整型参数相乘。所以如果你在提示符中输入 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("..."))

请注意,Hours*60的工作原理是将Hours与自身连接60次。但这显然不是你想要的,因此你必须在第一次机会时转换为int

1

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

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

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

在Python中确实会发生类型强制转换... - NullUserException
是的,但只在旧版本中,并且不符合问题中所述情况。在Python 3.0中,将不支持强制转换。 (http://docs.python.org/reference/datamodel.html#coercion-rules)。 - Greg Hewgill
嗯,这个 仍然有效。 - NullUserException

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接