在Python 2中,从随机数字生成问题

4 投票
2 回答
1968 浏览
提问于 2025-04-16 23:19

我希望能得到一些帮助,我在网上找了很久都没找到解决办法。再加上我对Python还是个新手。

我正在学习《Learn Python The Hard Way》,现在开始真的喜欢上了Python。所以我做了一个简单的小游戏。我想要一个“逃避死亡”的方法,我的想法是:要逃过死亡,你需要回答一个数学问题,如果你答对了,就回到开始的地方(start()),如果答错了,就去死亡的地方(dead())。这是我目前为这个问题写的代码:

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(question)的问题吗?还是我就是不知道!

2 个回答

0
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()

我觉得你需要的就是这个。每次调用的时候,你可能想要重新打乱这些数字,或者你甚至可以添加一个功能,随机生成一些数字(还有可能是问题),这些数字会在一定的范围内。

2
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

当然可以!请把你想要翻译的内容发给我,我会帮你把它变得通俗易懂。

撰写回答