[英]How to choose a random interaction with user input in 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()
可以像這樣從列表中隨機選擇一個元素
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
的隨機元素
joke = random.choice(["joke a", "joke b", "joke c"])
其他答案和評論建議使用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
這是您的操作方式:
import random
x = ['foo', 'bar', 'baz']
print x[random.randint(0, len(x)-1)]
生成一個介於0到您的笑話數組有多長之間的隨機整數; 打印該數組元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.