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

5 投票
4 回答
61733 浏览
提问于 2025-04-17 03:31

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

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

4 个回答

1

你的值 Hours 是一个字符串。要把它转换成整数,

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

在Python中,值有特定的 类型。即使一个字符串里面只包含数字,你还是不能把它当成数字用,必须告诉Python去转换一下。这和一些其他语言,比如Javascript、Perl和PHP不一样,那些语言会在需要的时候自动帮你转换类型。

2

Hours 是以字符串的形式读取的。首先需要把它转换成整数:

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

注意,Hours*60 这样写是因为它把 Hours 和自己连接了 60 次。但这显然不是你想要的结果,所以你必须在第一时间把它转换成 int 类型。

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

所以当它尝试用 / 去计算一个字符串和一个数字时,最后就会出错。

撰写回答