这个错误在Python和XHTML中是什么意思?
它一直显示这个错误
Traceback (most recent call last):
File "/home/zca22/public_html/Lab_Assn_5/Scripts/dice.py", line 7, in <module>
playerGuess = int(formData["guess"].value)
File "/usr/lib/python2.6/cgi.py", line 541, in __getitem__
raise KeyError, key
KeyError: 'guess'
我不知道我的代码哪里出问题了。
import cgi
import random
formData = cgi.FieldStorage()
playerName = formData["name"].value
playerGuess = int(formData["guess"].value)
theLength = 5
sum = 0
print "Content-type: text/html"
print "<p>Thanks for playing, " + playerName + ",</p>"
for die in range(theLength):
val = random.randint(1,6)
print '<img src = "Images/dice-%i.gif" alt="%i" width="107" height="107" />' % (val, val)
sum = sum + val
print "<p>You bet the total would be at least " + playerGuess + ". The total rolled was " + sum + ".</p>"
if playerGuess >= sum:
print "<p>You won!</p>"
else:
print """<p>Sorry, you lose!</p>
</body>
</html>"""
5 个回答
0
在用户输入的数据中,没有找到 "guess"
这个项。你确定你提交的表单里有一个像这样 <input name="guess" value="3" />
的字段吗?
0
在Python的dict
字典数据类型中,每一条记录都有一个键和一个值。你的代码formData["guess"]
是想通过键"guess"
来访问字典formData
中的值。
但是你遇到了KeyError
错误,这说明你的字典里没有叫"guess"
的键。因为这个字典是通过你的cgi.FieldStorage()
调用填充的,所以可以理解为你的cgi表单对象里没有名为"guess"的字段。
1
看起来你没有用 POST
方法发送一个 guess
值。在页面的前面,你应该有类似下面的内容:
<form action="/cgi-bin/guess.py" method="post">
<dl>
<dt><label for="name_field">Name:</label></dt>
<dd><input type="text" id="name_field" name="name" required="required" /></dd>
<dt><label for="guess_field">Guess:</label></dt>
<dd><input type="number" id="guess_field" name="guess" min="1" max="6" step="1" required="required" /></dd>
</dl>
<p><input type="submit" value="Guess" /></p>
</form>