簡體   English   中英

如何在Python中選擇與用戶輸入的隨機交互?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM