对于作业,我试图获得表格的结果" 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;可以添加一个数字,不知道如何做到这一点。
答案 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')
>>>