Как распечатать список, выбранный пользователем с помощью ввода? - PullRequest
0 голосов
/ 07 июня 2019

У меня есть два списка, определенных в программе на Python, я получаю пользовательский ввод с помощью функции input("...").

Пользователь должен ввести имя списка, чтобы я мог распечатать его на консоли,проблема в том, что я могу печатать только имя списка, а не сам список.

Вот мои списки:

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

Вот код, который я использую, чтобы получить пользователяinput:

a = input("Input list name")

Вот код, который я использую для печати списка:

print(a)

Вот ожидаемый результат:

[1, 2, 3, 4, 5]

Вместо этогоэто вывод, который я получаю:

aaa

Ответы [ 2 ]

2 голосов
/ 07 июня 2019

Ваш ввод str, и вы пытаетесь напечатать строку, а не список, когда делаете print(a).

Вы должны понимать, str и имя переменной не одно и то же.

aaa не совпадает с 'aaa'

Вы можете использовать dict в этом случае

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

Выход:

[1,2,3,4,5]
1 голос
/ 07 июня 2019

Попробуйте использовать функцию locals(), например:

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

Вот более краткая версия того же кода:

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

ПРИМЕЧАНИЕ: во втором ответе код меньше, потому что я удалил комментарии, использовал меньшие сообщения и добавил троичный оператор.

ПРИМЕЧАНИЕ: view thisОтветьте из на этот вопрос , чтобы узнать больше о том, почему использование eval плохо.

Удачи.

...