Python 如何从用户输入中获取输入的变量值?

Python 如何从用户输入中获取输入的变量值?,python,python-3.x,Python,Python 3.x,我试图创建一个基本菜单,检查输入的变量是否与定义的变量匹配。如果定义了变量,则获取已定义变量的数据 例如 Item1 = "bill" Item2 = "cows" item3 = "abcdef" Choose_Item = input("Select your item: ") 我输入Item1 选择项目应等于“账单” 这似乎是您想要的: Choose_Item = eval(input("Select your item: ")) 不过,这可能不是最好的策略,因为输入错误或恶意用户

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

例如

Item1 = "bill"
Item2 = "cows"
item3 = "abcdef"
Choose_Item = input("Select your item: ")
  • 我输入
    Item1
  • 选择项目
    应等于
    “账单”

这似乎是您想要的:

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")

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

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)

如果要选择名称为用户生成的变量,则需要使用
locals()[Choose\u Item]

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

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

。。。然后您想要的值是
items[选择\u Item]

,您尝试了什么?这看起来更像是一个代码请求,而不是一个问题。
Choose_Item=globals()[input(“Select your Item:”)]
Bah你用同样的建议击败了我+1用于更快的打字机;)我刚才在你的回答上打了一个类似的评论,所以你至少赢得了那场比赛。:)FWIW:这个问题被标记为python-3,所以您希望在那个print语句中使用paren,并且您可能还希望在异常情况下打印一些内容,而不仅仅是构建一个字符串,不使用它做任何事情。:)但是随机字符串不是很好的编程礼仪吗?很好的回答,先生,你应该得到这个答案+1的另一个原因-本地方法比eval好,因为它至少不会让恶意用户离开,也不会评估代码。:)当然,字典法更可取。