В Python 2 создание случайного вопроса из перемешанных чисел - PullRequest
4 голосов
/ 10 августа 2011

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

Я изучаю Python The Hard Way и начинаю любить python. Итак, я сделал простую маленькую игру. Я ищу способ «обмануть смерть», и моя идея состоит в том, чтобы избежать смерти, вам нужно ответить на математический вопрос, и если вы все сделаете правильно, вы вернетесь к start () или укажи это неправильно, ты умрешь (). Вот код, который у меня есть для этого вопроса:

from random import shuffle

numbers = [1, 75, 64, 80275, 2, 7]

shuffle(numbers)

def question(numbers):

Теперь, используя мой список чисел, я не совсем знаю, как импортировать перемешанные числа. Я думаю, что у меня есть заданный вопрос, как этот:

__ + __ / __ * __ - __ * __

Чтобы он внес в список чисел, которые были перетасованы, а затем заменил __ на соответствующий __ в вопросе. Тогда у меня будет:

print "Your answer:"
user_answer = raw_input("> ")

Так что они могут вставить свой ответ. После этого мне понадобится способ проверить ответ, поэтому я сделаю это:

if useranswer == answer:
    print "You lived!"
    start()
else:
    dead()

Где переменная 'answer' - это то, что Python вернет в качестве ответа. Итак, в конце я думаю, что код должен выглядеть следующим образом:

from random import shuffle

numbers = [1, 75, 64, 80275, 2, 7]

question = shuffle(numbers)

def cheat_death(numbers):
    answer = __ + __ / __ * __ - __ * __
    print "You have one chance to cheat death.\nTo do this, you must answer the following question:"
    print question
    user_answer = raw_input("> ")

    if user_answer == answer:
        start()
    else:
        dead()

Хорошо, у меня есть рабочий кусок кода. Он генерирует случайные числа, а затем ставит их в вопрос. вот код:

i = 0
numbers = []

while i < 6:
    numbers.append(random.randrange(1,900))

    i = i + 1


def cheat_death(numbers):
    shuffle(numbers)
    question = "%d + %d / %d * %d - %d * %d" % tuple(numbers)
    print "You have a single chance to cheat death. To live, please answer the question correctly below:"
    print question
    answer = eval(question)
    user_answer = raw_input("> ")
    if user_answer == answer:
        start()
    else:
        dead()

cheat_death()

Но каждый раз, когда я вношу ответ, независимо от того, прав он или нет, он говорит, что это неправильно. Может ли это быть из-за eval (вопрос)? Или человек, которого я просто не знаю!

Ответы [ 2 ]

2 голосов
/ 10 августа 2011
from random import shuffle

numbers = [1, 75, 64, 80275, 2, 7]
shuffle(numbers)
print numbers
# [80275, 64, 75, 2, 7, 1]
question = "%d + %d / %d * %d - %d * %d" % tuple(numbers)
print question 
# 80275 + 64 / 75 * 2 - 7 * 1
answer = eval(question)
print answer
# 80269.7066667
0 голосов
/ 10 августа 2011
def cheat_death(numbers):
    answer = eval('{0}+{1}/{2}*{3}-{4}*{5}'.format(*numbers))
    print "You have one chance to cheat death.\nTo do this, you must answer the following question:"
    print '{0}+{1}/{2}*{3}-{4}*{5}'.format(*numbers)
    user_answer = raw_input("> ")

    if user_answer == answer:
        start()
    else:
        dead()

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

...