一直显示此错误
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>"""
答案 0 :(得分: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>
答案 1 :(得分:0)
您的代码希望guess
的值在表单数据字典中,但它不存在。
答案 2 :(得分:0)
这意味着表单没有“猜测”条目,但它确实有一个“名称”条目。
答案 3 :(得分:0)
用户输入字典"guess"
中没有formData
条目。您确定在提交的确切形式中有<input name="guess" value="3" />
这样的字段吗?
答案 4 :(得分:0)
在Python dict
词典数据类型中,每个条目都有键和值。您的代码formData["guess"]
尝试访问密钥formData
下的字典"guess"
以检索基础值。
由于您获得了KeyError
,因此您的词典没有名为"guess"
的密钥。由于字典是由cgi.FieldStorage()
调用填充的,因此可以解释为您的cgi表单对象没有名称为“guess”的字段。