在Python 2中,从随机数字生成问题
我希望能得到一些帮助,我在网上找了很久都没找到解决办法。再加上我对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
当然可以!请把你想要翻译的内容发给我,我会帮你把它变得通俗易懂。