【问题标题】:Randomizing separate chunks of code随机化单独的代码块
【发布时间】:2013-12-06 15:33:22
【问题描述】:

我正在制作一个小游戏,其中出现 3 个选项,你必须选择正确的答案。显然“A”不可能一直是正确答案,所以我想随机化 3 个打印,但也要使它们可定义,以便它们可以匹配到正确答案。

这是代码,我不知道从哪里开始。我想过将 3 个不同的代码部分定义为 1、2 和 3,然后将它们随机化。

我希望代码的第一位,“这是正确答案”可以定义为一个值,所以我可以说,如果选择 = a 那么......做得好正确答案。 (我知道怎么做这部分)

 input("now press enter for your definitions")

 #1st
 #This prints the fruit, and the CORRECT matching fruit definitions
 print(a, "is -  A:", fruits[a])

 #2nd    
 #these randomly generates 2 other fruit definitons
 import random
 with open('fruitdefinitions.txt') as f:
    print (a, "is -  B:", random.choice(list(f)))

 #3rd
 import random
 with open('fruitdefinitions.txt') as f:
    print (a, "is -  C:", random.choice(list(f)))

只是为了澄清“a”是关键字,fruits[a] 从字典中获取“a”的值或定义。 fruitdefinition.txt 是一个文本文件,其中仅包含水果的定义。

谢谢。由于工作忙,可能无法立即回复。

【问题讨论】:

  • 你只需要一个import random

标签: python random import function


【解决方案1】:

random.shuffle 是你的朋友。首先选择你的两个随机错误答案。将它们与正确答案一起放在一个列表中。随机播放列表。仅在完成所有操作后才与用户交互(使用print 或其他任何方式)。

请注意,您当前选择错误答案的方式(在同一个列表中调用 random.choice 两次)有可能导致两个错误答案最终彼此相同。也许您可以想出一种不同的方式来处理列表,以排除这种可能性。我认为random.shuffle 也可能参与其中。

以下示例说明了如何重新排序数据,而不必重新排序代码中的语句以获得不同的结果:

import random
things = [ 'spam', 'eggs', 'beans' ]
for repeat in range(10):   # exactly the same *code* will run 10 times...
    print('the first item is ' + things[0])
    print('the second item is ' + things[1])
    print('the third item is ' + things[2])
    random.shuffle(things) # ... but with a different outcome each time

【讨论】:

  • 我没有意识到可以在列表中编码,谢谢。当我回到家时,我会对此进行测试,并会分享它是否有效或我是否有任何进一步的问题。您如何将代码分组到列表中,因为我从未遇到过。
  • 我不知道你为什么说“代码”本身需要被操纵(放在一个列表中,随机)。当然,您可以只操作 data(三个字符串)并保持“代码”固定。
  • 我想要的只是 3 个“打印”以随机顺序排列。如果可以通过“操纵数据”来做到这一点,那么我将不得不对此进行调查。
  • 您从文件中选择了两个错误的答案,然后列出所有三个答案的列表,将它们随机排列,然后将它们打印为 A、B、C。请务必牢牢抓住您的正确答案,以便你可以比较一下。
  • 谢谢你。除了垃圾邮件、鸡蛋和豆子上的撇号之外,您的代码可以完美地工作,因为这只是打印。第一项是垃圾邮件。我将垃圾邮件定义为一个定义,然后使用您的示例而不使用撇号。 +1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-10
  • 1970-01-01
  • 2011-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多