Попытка зациклить только некоторые части математической программы викторины - PullRequest
1 голос
/ 19 сентября 2011

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

import random
from sys import exit

add1 = random.randint(1, 10)
add2 = random.randint(1, 10)
answer = str(add1 + add2)


question = "What is %d + %d?" % (add1, add2)
print question
print answer

userIn = raw_input("> ")

if userIn.isdigit() == False:
    print "Type a number!"
        #then I want it to ask the same question and prompt for an answer.
elif userIn == answer:
    print "AWESOME"
else:
    print "Sorry, that's incorrect!"


print "Play again? y/n"
again = raw_input("> ")

if again == "y":
    pass
#play the game again
else:
    exit(0)

Ответы [ 2 ]

2 голосов
/ 19 сентября 2011

Вам не хватает двух вещей здесь. Во-первых, вам нужна какая-то конструкция цикла, например:

while <condition>:

Или:

for <var> in <list>:

И вам нужен какой-то способ "замкнуть" контур, чтобы вы могли начать снова вверху, если ваш пользователь вводит нечисловое значение. За что ты хочешь прочитайте заявление continue. Собрав все это вместе, вы можете получить как то так:

While True:
    add1 = random.randint(1, 10)
    add2 = random.randint(1, 10)
    answer = str(add1 + add2)


    question = "What is %d + %d?" % (add1, add2)
    print question
    print answer

    userIn = raw_input("> ")

    if userIn.isdigit() == False:
        print "Type a number!"

        # Start again at the top of the loop.
        continue
    elif userIn == answer:
        print "AWESOME"
    else:
        print "Sorry, that's incorrect!"

    print "Play again? y/n"
    again = raw_input("> ")

    if again != "y":
        break

Обратите внимание, что это бесконечный цикл (while True), который завершается только при попадании в оператор break.

В заключение, я настоятельно рекомендую Изучить Python с трудом как хорошее введение в программирование на Python.

1 голос
/ 19 сентября 2011

В Python есть два основных типа циклов: для циклов и циклов while.Вы должны использовать цикл for для циклического перемещения по списку или другой последовательности или для выполнения чего-либо определенное количество раз;Вы бы использовали некоторое время, когда вы не знаете, сколько раз вам нужно что-то делать.Что из этого кажется более подходящим для вашей проблемы?

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