我希望能够从笑话列表中随机选择一个笑话,并继续通过笑话(无论是敲门声,还是其他任何内容)与用户输入。
我知道我需要做些什么才能让用户互动产生一个简单的敲门笑话,但我希望能够随机做几个不同的笑话。
所以就伪代码而言,我希望看起来像这样:
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()
答案 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之间的随机整数,但是你的笑话数组是多长的;打印那个数组元素。