繁体   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