bhushan bapat
bhushan bapat

Reputation: 31

How do I print a list choosen by the user via input?

I have two lists defined in a python program, I'm getting user input via the input("...") function.

The user is supposed to input a list name so I can print it to the console, the problem is that I can only print the list name and not the actual list itself.

Here are my lists:

aaa = [1,2,3,4,5]
bbb = [6,7,8,9,10]

Here is the code I'm using the get the user input:

a = input("Input list name")

Here is the code I'm using to print the list:

print(a)

Here is the expected output:

[1, 2, 3, 4, 5]

Instead this is the output I'm getting:

aaa

Upvotes: 0

Views: 324

Answers (2)

Sociopath
Sociopath

Reputation: 13401

Your input is str and you are trying to print string not a list when you do print(a).

You need to understand str and variable name are not the same thing.

aaa is not same as 'aaa'

You can use dict in this case

# store your lists in dict as below
d = {'aaa': [1,2,3,4,5], 'bbb':[6,7,8,9,10]}

a=input('Input list name: ')

# this will handle if user input does not match to any key in dict
try:
    print(d[a])
except:
    print("Please enter correct name for list")

Output:

[1,2,3,4,5]

Upvotes: 2

Malekai
Malekai

Reputation: 5011

Try using the locals() function, like this:

aaa = [1, 2, 3, 4, 5]
bbb = [6, 7, 8, 9, 10]
target = input("What list would you like to see? ")
# NOTE: please don't (I REPEAT DON'T) use eval here
#     : it WILL cause security flaws
#     : try to avoid eval as much as possible
if target in locals():
  found = locals()[target]
  # basic type checking if you only want the user to be able to print lists
  if type(found) == list:
    print(found)
  else:
    print("Whoops! You've selected a value that isn't a list!")
else:
  print("Oh no! The list doesn't exist")

Here is a more concise version of the same code:

aaa = [1, 2, 3, 4, 5]
bbb = [6, 7, 8, 9, 10]

target = input("Enter list name: ")

if target in locals():
  found = locals()[target]
  print(found if type(found) == list else "Value is not a list.")
else:
  print("Target list doesn't exist")

NOTE: in the second answer the code is smaller because I've removed comments, used smaller messages and added a ternary operator.

NOTE: view this answer from this question to find out more about why using eval is bad.

Good luck.

Upvotes: 1

Related Questions