Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get value of variable entered from user input?

I am trying to create a basic menu that checks to see if the variable entered matches a defined variable. If the variable is defined get the data of the defined variable.

Example.

Item1 = "bill"
Item2 = "cows"
item3 = "abcdef"
Choose_Item = input("Select your item: ")
  • I type in Item1
  • Choose_Item should equal "bill"
like image 913
Nick W. Avatar asked Mar 01 '13 23:03

Nick W.


3 Answers

This seems like what you're looking for:

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

This probably isn't the best strategy, though, because a typo or a malicious user can easily crash your code, overload your system, or do any other kind of nasty stuff they like. For this particular case, a better approach might be

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")
like image 174
Danica Avatar answered Oct 16 '22 04:10

Danica


You'll need to use locals()[Choose_Item] if you want to choose a variable whose name is what the user produced.

A more conventional way to do this, though, is to use a dictionary:

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

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

like image 32
Borealid Avatar answered Oct 16 '22 04:10

Borealid


Two ways you could go about this. The bad way:

print(eval(Choose_Item))

The better way would be to use a dictionary

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)
like image 23
Dave Lasley Avatar answered Oct 16 '22 04:10

Dave Lasley