TypeError:无法隐式地将'int'对象转换为str * Python *

时间:2014-07-25 07:45:48

标签: python python-3.x

对于作业,我试图获得表格的结果" age"并使用python向该数字添加一个。该表格将让用户输入他们的年龄,结果应该是他们明年的年龄。

这是我迄今为止所拥有的:

import cgi
form = cgi.FieldStorage()

name = str(form.getvalue("name"))
age = int(form.getvalue("age"))

print ("""Content-type: text/html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html><head>
<title>Lab 9</title>
</head><body>
""")

print ("<p>Hello," +name+ ".</p>")
print ("Next year you will be" + str(age+1) + "years old")
print ("</body></html>") 

我得到的错误是

Traceback (most recent call last):
    File "/Users/JLau/Documents/CMPT 165/Lab 9/result.py", line 19, in <module>
        print ("Next year you will be" + str(age + 1) + "years old")
    TypeError: Can't convert 'int' object to str implicitly"

我不知何故需要将年龄的值转换为&#34; int&#34;可以添加一个数字,不知道如何做到这一点。

4 个答案:

答案 0 :(得分:1)

这不是您正在运行的代码。

检查以下测试。

>>> age = 20
>>> print ("Next year you will be" + str(age+1) + "years old")
Next year you will be21years old
>>> age = '20'
>>> print ("Next year you will be" + str(age+1) + "years old")
Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    print ("Next year you will be" + str(age+1) + "years old")
TypeError: Can't convert 'int' object to str implicitly

如果age是字符串,您将收到此错误。

请添加一行

print(type(age))

并查看结果。

答案 1 :(得分:0)

使用int进行str输入时,您无法添加str()

print("Next year you will be",age+1,"years old")

是您要查找的代码。

<强>更新 导致错误的另一个可能原因是您使用cgi - 根据Python documentation cgi经常会在测试时抛出错误。您应该按照链接上的说明进行调试。

然而,问题可能在于:

age = int(form.getvalue("age"))

因为int()不会将NoneType转换为int类型,因此会出错。

答案 2 :(得分:0)

事实上,最好使用字符串模板,如:

   print("Next year you will be %s year old" % (age + 1, ))

答案 3 :(得分:0)

您无法将字符串与int连接起来。您需要使用str函数将int转换为字符串,或使用格式化来格式化输出。

所以问题在于str(age + 1)。所以从中移除str并留下age + 1

更新:

我刚刚在IDLE中做了以下操作,没有问题

>>> age = 5
>>> age + 1
    6
>>> print ("hello, I'm", age + 1, "years old")
("hello, I'm", 6, 'years old')
>>>