如何获取用户输入以引用Python中的变量?

2 投票
2 回答
1562 浏览
提问于 2025-04-16 00:05

我想让用户输入一些内容,然后在我的代码中用这个输入去查找某个列表。我记得这个叫做命名空间?那么,我需要对这段代码做什么,才能打印出用户输入的内容,比如他们输入'list1'或者'list2'?

list1 = ['cat', 'dog', 'juice']
list2 = ['skunk', 'bats', 'pogo stick']

x = raw_input('which list would you like me to print?')

我打算有很多这样的列表,所以用一系列的if...then语句看起来有点乱。

2 个回答

2

使用字典的想法很好,但具体的实现方式可能更像这样:

def pick_one(prompt, **kwds):
  while True:
    x = raw_input(prompt)
    if x in kwds:
      return kwds[x]
    else:
      print 'Please choose one of: ',
      for k in sorted(kwds): print k,
      print

可以这样使用,例如:

print pick_one('which list would you like me to print?',
    list1 = ['cat', 'dog', 'juice']
    list2 = ['skunk', 'bats', 'pogo stick'])

关键是,当你让用户从有限的选项中选择一个时,你总是需要检查一下他们的选择是否真的是其中之一(毕竟,输入错误是很常见的),如果不是,就要准确地提示他们(给出可选项的列表),并再给用户一次机会。

还有很多改进的地方(比如设置最大尝试次数,如果超过这个次数就认为用户无法输入正确的选项,然后随机选择一个;-) 这些可以留给读者自己去练习(虽然不太难,但也没什么特别有趣的;-))。

4

在我现在能想到的情况下,可能更好的是使用一个字典,里面包含用户可以查阅的内容,比如:

my_dict = {
    'list1': ['cat', 'dog', 'juice']
    'list2': ['skunk', 'bats', 'pogo stick']
}

key = raw_input('which list would you like me to print?')

print my_dict[key]

实际上,你可以利用Python自带的 globals() 函数,像这样使用:

list1 = ['cat', 'dog', 'juice']
list2 = ['skunk', 'bats', 'pogo stick']
x = raw_input()

print globals()[x]

撰写回答