簡體   English   中英

如何獲取陣列的用戶輸入?

[英]How can I get user input for an array?

我想從用戶的輸入創建一個列表,然后從該列表中返回一個隨機值。

這是我到目前為止的代碼,但我無法弄清楚如何獲取數組的輸入。

import random
movie_array = ["movieA", "movieB", "movieC"]
print(random.choice(movie_array))

我知道輸入函數,但我不知道如何使用它來創建數組/列表。 我試過以下但是沒有用

movie_array = input()

但是當我運行random.choice時,它只選擇一個單獨的字符。

你可以這樣做:

>>> import random
>>> movie_array = [input("Input a movie: ") for i in  range(3)]
Input a movie: movieA
Input a movie: movieB
Input a movie: movieC
>>> print(random.choice(movie_array))
movieC

使用循環。

在循環體中提示用戶輸入電影標題,或“q”退出。 將每個條目附加到電影列表中。 完成后從影片列表中選擇一個隨機影片:

import random

movies = []
while True:
    entry = input('Enter a movie title (q to quit): ')
    if entry.lower() == 'q':
        break
    movies.append(entry)

if movies:
    print(random.choice(movies))

希望您的用戶不想進入名為“Q” (1982)的電影。 使用空條目作為哨兵可能更好,如下所示:

    entry = input('Enter a movie title (<Enter> to quit): ')
    if entry == '':
        break

您可以用逗號分隔的單行讀取電影,然后將其拆分為數組。

movie_array=raw_input("Enter Movies").split(',')

如果是python 3.x.

movie_array=input("Enter Movies").split(',')

只是想澄清為什么你的解決方案嘗試不起作用IE:

movie_array = input()

這是因為輸入返回一個string IE的子串列表,所以你可以看到movie_array = 'test'movie_array = ['t','e','s','t']

print(movie_array[1])
>>>'e'

為了解決你的問題我會建議@mhawke回答(使用while循環)

通過使用while循環,您可以檢索多個輸入並將每個輸入存儲在列表中。 請注意,雖然while循環必須能夠“結束” ,否則可能會導致問題。 因此,您必須在while循環中的某處break 否則程序將被無限期地運行,直到你強制它關閉或直到它崩潰。

有關這方面的更多信息,請參閱此處:

還檢查官方維基的字符串和控制流程。

你可以像這樣給它。

movie_array = [b for b in input().split()]

然后你就可以得到像這樣的用戶輸入,

movieA movieB movieC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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