2011-08-07 2 views
0

그것은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' 

내 코드 IIN 잘못 모르는이 오류를 보여주는 유지한다.

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

나는이 코드를 이미 XHTML 형식으로 추가하고있다. 적어도 합계는 이 될 것이다.

+0

'fo = open ("/ tmp/formdata.txt", "w"); fo.write (repr (formData)); fo.close()'를 사용하여 실제로 얻은 것을 확인하십시오. – Keith

답변

0

코드는 guess 양식 데이터 사전에 있어야 할 값을 기대하지만 존재하지 않음을 알 수있다.

0

양식에 "추측"항목이 없지만 "이름"항목이 있음을 의미합니다.

0

사용자 입력 사전 인 formData"guess" 항목이 없습니다. 제출하려는 양식에 <input name="guess" value="3" />과 같은 필드가 있는지 확인 하시겠습니까?

+0

네, 확신합니다. 그게 내가이 일이 일어나고 있는지 확신 할 수없는 이유입니다. –

1

POST 아니요, guess 값이 아닌 것 같습니다. 당신은 이전 페이지에서 이런 일이 있어야합니다 파이썬 dict 사전 데이터 유형에서

<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> 
+0

+1 왜냐하면 당신이 그것을 역 추적했기 때문입니다. –

0

를, 각 항목은 있습니다. 코드 formData["guess"]formData"guess" 아래의 사전에 액세스하여 기본 값을 검색합니다.

KeyError이 (가) 있으므로 사전에 "guess"이라는 키가 없습니다. 사전에 cgi.FieldStorage() 호출이 채워지기 때문에 이것은 cgi 양식 객체에 "guess"라는 이름의 필드가 없다는 의미로 해석 될 수 있습니다.

관련 문제