如何在Python中随机选择用户输入的交互?
我想从一堆笑话中随机选一个,然后通过用户的输入来继续讲这个笑话(不管是敲门笑话还是其他类型的)。
我知道怎么做一个简单的敲门笑话,并且让用户参与进来,但我想能随机选择几个不同的笑话。
所以在伪代码方面,我希望它看起来像这样:
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
这是你可以这样做:
import random
x = ['foo', 'bar', 'baz']
print x[random.randint(0, len(x)-1)]
生成一个随机的整数,这个整数的范围是从0到你的笑话数组的长度;然后打印出这个数组中的那个元素。
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
1
在编程中,有时候我们会遇到一些问题,可能是因为代码写得不够好,或者是我们对某些概念理解得不够透彻。比如,有人可能在使用某个库的时候,发现它的功能和自己想的不太一样,这时候就需要仔细看看文档,或者在网上查找相关的资料。
另外,编程中常常会出现错误信息,这些信息虽然有时候看起来很复杂,但其实它们是在告诉我们哪里出了问题。我们只需要耐心地分析这些信息,就能找到解决办法。
总之,编程是一项需要不断学习和实践的技能,遇到问题时不要气馁,多动手试试,或者向别人请教,慢慢就能掌握更多的知识。
joke = random.choice(["joke a", "joke b", "joke c"])
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
随机选择一个元素。