我想创建一个基本菜单,检查输入的变量是否与定义的变量匹配。如果变量已定义,则获取已定义变量的数据。如何获取用户输入的变量值?
例子。
Item1 = "bill"
Item2 = "cows"
item3 = "abcdef"
Choose_Item = input("Select your item: ")
- 我
Item1
Choose_Item
类型应该等于"bill"
我想创建一个基本菜单,检查输入的变量是否与定义的变量匹配。如果变量已定义,则获取已定义变量的数据。如何获取用户输入的变量值?
例子。
Item1 = "bill"
Item2 = "cows"
item3 = "abcdef"
Choose_Item = input("Select your item: ")
Item1
Choose_Item
类型应该等于"bill"
这似乎是你要找的东西:
Choose_Item = eval(input("Select your item: "))
这可能不是最好的策略,但是,因为错字或恶意用户很容易崩溃你的鳕鱼e,超载你的系统,或者做其他任何他们喜欢的讨厌的东西。对于这种特殊情况,更好的方法可能是
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")
Bah你击败了我的同样的忠告。 + +1为更快的typer;) – 2013-03-01 23:48:00
我只是在你的答案上输入类似的评论,所以你至少赢得了这场比赛。 :) – Dougal 2013-03-01 23:48:51
有两种方法可以解决这个问题。糟糕的方法:
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)
FWIW:问题被标记为python-3,因此您希望在该打印语句中使用parens,并且您可能还希望在异常情况下打印某些内容,而不是仅创建一个字符串而不对其执行任何操作。 :) – Dougal 2013-03-01 23:50:47
但是不是随机字符串很好的编程礼仪?良好的抓住先生,你值得这个答案的另一个原因 – 2013-03-01 23:52:51
你需要使用locals()[Choose_Item]
,如果你想选择一个变量,其名称是用户产生的内容。
一种更传统的方式来做到这一点,虽然是使用字典:
items = {
'Item1': 'bill',
'Item2': 'cows',
'Item3': 'abcdef',
}
...然后你想要的值是items[Choose_Item]
。
+1 - 当地人的方法比eval更好,因为它至少不会让恶意用户去评估代码。 :)当然,字典的方法是可取的。 – Dougal 2013-03-01 23:55:06
你试过了什么?这似乎更像是一个代码请求,而不是一个问题。 – Hubro 2013-03-01 23:47:10
''Choose_Item = globals()[input(“Select your item:”)]'' – eyquem 2013-03-01 23:48:48