9

我正在尝试创建一个基本菜单,用于检查输入的变量是否与定义的变量匹配。如果定义了变量,则获取已定义变量的数据。

例子。

Item1 = "bill"
Item2 = "cows"
item3 = "abcdef"
Choose_Item = input("Select your item: ")
  • 我输入Item1
  • Choose_Item应该等于"bill"
4

3 回答 3

22

这似乎是您正在寻找的:

Choose_Item = eval(input("Select your item:  "))

不过,这可能不是最好的策略,因为拼写错误或恶意用户很容易使您的代码崩溃、系统过载或做任何其他他们喜欢的讨厌的事情。对于这种特殊情况,更好的方法可能是

items = {'item1': 'bill', 'item2': 'cows', 'item3': 'abcdef'}
choice = input("Select your item: ")
if choice in items:
    the_choice = items[choice]
else:
    print("Uh oh, I don't know about that item")
于 2013-03-01T23:47:13.347 回答
4

有两种方法可以解决这个问题。坏方法:

print(eval(Choose_Item))

更好的方法是使用字典

items = {'1':'bill','2':'cows'}
Choose_Item = input("Select your Item: ")
try:
    print(items[Choose_Item])
except KeyError:
    print('Item %s not found' % Choose_Item)
于 2013-03-01T23:47:23.377 回答
4

locals()[Choose_Item]如果要选择名称是用户生成的变量,则需要使用。

不过,更传统的方法是使用字典:

items = {
    'Item1': 'bill',
    'Item2': 'cows',
    'Item3': 'abcdef',
}

... and then the value you want is items[Choose_Item].

于 2013-03-01T23:48:06.653 回答