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

0 投票
4 回答
3818 浏览
提问于 2025-04-21 04:04

我想从一堆笑话中随机选一个,然后通过用户的输入来继续讲这个笑话(不管是敲门笑话还是其他类型的)。

我知道怎么做一个简单的敲门笑话,并且让用户参与进来,但我想能随机选择几个不同的笑话。

所以在伪代码方面,我希望它看起来像这样:

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 随机选择一个元素。

撰写回答