如何在Python中选择与用户输入的随机交互?

时间:2014-09-11 17:58:15

标签: python arrays random

我希望能够从笑话列表中随机选择一个笑话,并继续通过笑话(无论是敲门声,还是其他任何内容)与用户输入。

我知道我需要做些什么才能让用户互动产生一个简单的敲门笑话,但我希望能够随机做几个不同的笑话。

所以就伪代码而言,我希望看起来像这样:

print("Would you like to hear a joke?")
answer = input()
if answer == ("Yes"):
   choose joke from list of jokes ["joke a", "joke b", "joke c"]
   print("randomly chosen joke")
   continue on with user input
else:
   sys.exit()

4 个答案:

答案 0 :(得分:2)

可以像这样随机选择列表中的元素

import random
joke_list = ['joke1', 'joke2', 'joke3']
random.choice(joke_list)

但实际上,这只是选择一个字符串。你想要的是选择互动的东西。这可以用这样的东西来完成

def joke1():
    #Execute joke 1
    pass

def joke2():
    #Execute joke 1
    pass

joke_list = [joke1, joke2] #list of functions
import random
joke = random.choice(joke_list)
joke() #execute the selected joke, which is a function     

总结一下:制作你的笑话函数而不是字符串,这样它们每个都可以是一个独特的交互,制作一个函数列表,用random.choice选择一个随机元素

答案 1 :(得分:1)

joke = random.choice(["joke a", "joke b", "joke c"])

答案 2 :(得分:1)

其他答案和评论建议使用random.choice,但我认为在这种情况下使用它实际上是错误的,因为它可能会在同一个会话中多次重复相同的笑话。我怀疑这对用户来说是一种糟糕的体验,所以这里有另一种选择。

使用random.shuffle随机排序列表,然后对其进行迭代以逐个获取您的笑话,直到您用完或用户不再需要:

import random

jokes = [x, y, z]     # these could be strings, or functions as suggested by GraphicsNoob

random.shuffle(jokes) # put the list in a random order

it = iter(jokes)      # an iterator over the shuffled list

first = next(it)
print(first)          # tell the first joke, could be first() instead

for joke in it:       # loop over the rest of the jokes
    response = input("Would you like to here another joke?"):   # ask about more
    if response.lower().startswith("n"):                   # stop if the user says "no"
        break
    print(joke)       # tell the next joke, could be joke() if you're using functions

答案 3 :(得分:0)

这是你如何做到的:

import random

x = ['foo', 'bar', 'baz']
print x[random.randint(0, len(x)-1)]

生成0之间的随机整数,但是你的笑话数组是多长的;打印那个数组元素。