如何获取用户输入以引用Python中的变量?
我想让用户输入一些内容,然后在我的代码中用这个输入去查找某个列表。我记得这个叫做命名空间?那么,我需要对这段代码做什么,才能打印出用户输入的内容,比如他们输入'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]