这个错误在Python和XHTML中是什么意思?

0 投票
5 回答
585 浏览
提问于 2025-04-16 23:05

它一直显示这个错误

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>

撰写回答