Я не могу понять проблему в этом коде о Python, нужна помощь - PullRequest
0 голосов
/ 07 августа 2011

Я собираюсь создать игру, пользователь введет имя и номер ставки, и моя программа покажет, что номер ставки больше, чем сумма 5 случайных кубиков, и покажу каждое их изображение. Я знаю, что что-то не так, но я не знаю, где

import cgi
import random

formData = cgi.FieldStorage()
playerName = formData["name"].value
playerGuess = int(formData["guess"].value)
theLength = 5
index =1
print "Content-type: text/html"


print "<p>Thanks for playing, " + playerName + ",</p>"
for die in range(theLength):
    die%i = random.randint(1,6)%index
    if int(die) == 1:
        print "<img src = "Images/dice-1.gif" alt="1" width="107" height="107" />"
    elif int(die) == 2:
        print "<img src = "Images/dice-2.gif" alt="2" width="107" height="107" />"
    elif int(die) == 3:
        print "<img src = "Images/dice-3.gif" alt="3" width="107" height="107" />"
    elif int(die) == 4:
        print "<img src = "Images/dice-4.gif" alt="4" width="107" height="107" />"
    elif int(die) == 5:
        print "<img src = "Images/dice-5.gif" alt="5" width="107" height="107" />"
    elif int(die) == 6:
        print "<img src = "Images/dice-6.gif" alt="6" width="107" height="107" />"
    index = index + 1
    total = die%i + die%i

print "<p>You bet the total would be at least " + playerGuess + ". The total rolled was " + sum + ".</p>"

if int(guessNumber) >= total:
    print "<p>You won!</p>"
else:
    print """<p>Sorry, you lose!</p>

Ответы [ 3 ]

2 голосов
/ 07 августа 2011

Линия

die%i = random.randint(1,6)%index

Недопустимый синтаксис Python. Это двоюродный брат несколько строк ниже:

total = die%i + die%i

не даст вам ожидаемых результатов; % будут рассматриваться как операторы модов. Этот цикл должен выглядеть примерно так:

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 = 0
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)
    total = total + val
1 голос
/ 07 августа 2011

Вы не отправляете правильные ответы HTTP;после последнего заголовка должен появиться перевод строки, поэтому вы ищете:

print("Content-Type: text/plain")
print("")

Кроме того, первая %i в

die%i = random.randint(1,6)%index

является синтаксической ошибкой;левая сторона должна быть ссылкой на переменную.

И вместо total = die%i + die%i вы, вероятно, захотели total += die%index и total = 0 на самом верху.

Кстати, вы можете значительно упростить большой блок if .. elif, написав

print "<img src = "Images/dice-%s.gif" alt="1" width="107" height="107" />" % die
0 голосов
/ 07 августа 2011

Неверная строка, потому что вы хотите присвоить результат операции.

die%i = random.randint(1,6)%index

Например, если, скажем, die равен 5, а i равен 1, это приведет к тому, что:

0 = random.randint(1,6)%index

Что не имеет никакого смысла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...