2017-01-27 2 views
0

Я хочу знать, как я могу конвертировать (возможно) входной эквив пользователя к переменной, чтобы заменить егоИспользуйте вход в качестве переменной в Python

я ожидал, когда я входной slice1 будет print a1 a2 a3, но я нашел s l i c e 1 хау могу ли я исправить это

Это код является Exemple

List = [['a1', 'a2', 'a3'], ['b1', 'b2', 'b3']] 
slice1 = List[0] 
slice2 = List[1] 
temp = input("slice number") 
for item in temp: 
    print(i)` 
+0

'l1 = [[ 'a1', 'a2', 'a3'], ['b1', 'b2', 'b3']]; print (l1 [int (input ("Введите номер фрагмента:"))]) '. Номер фрагмента должен быть внутри индекса списка. Или иначе это вызовет ошибку. – MYGz

ответ

1

Вы должны использовать словарь.

lists = {"slice1":["a1", "a2", "a3"], "slice2":["b1", "b2", "b3"]} 
userInput = input("Enter Slice Number") 

varName = "slice"+userInput 
print(" ".join(lists[varName])) 

slice1 - это то, что называется ключом. Ключи - неизменяемые элементы (обычно строки, но могут быть целыми или кортежами). Каждый ключ имеет значение, например, slice1 имеет значение ["a1", "a2", "a3"]. Вы можете получить доступ к значениям точно так же, как в списке, но вместо использования индекса вы используете ключ.

Итак, если вы хотите получить доступ к ["a1", "a2", "a3"], вы делаете списки ["slice1"]. Это имеет преимущество перед использованием глобалов, поскольку вы можете легко добавлять новые ключи и изменять значения. Кроме того, неверно использовать глобальные переменные.

" ".join(lists["slice1"]) 

" ".join(list) получает все пункты list и помещает их вместе, используя текст «» в качестве разделителя.

Код я выше заканчивает тем, что делает это

>>>Enter Slice Number1 
a1 a2 a3 
>>> 

Так что, когда вы вводите "1" вы получите "a1 a2 a3"

0

Вы можете попробовать использовать глобалам(), чтобы получить доступ к переменным по имени

Например:

List = [[a1, a2, a3], [b1, b2, b3]] 
slice1 = List[0] 
slice2 = List[1] 
temp = input("slice number") 
slice_list = globals()[temp] 
for item in slice_list: 
    print(item) 
+0

Ошибка line6: print (print (globals() ['slice' + item])) KeyError: 's' – a7me3D

+0

Если вы используете использование «для элемента в temp», вы получите каждый токен с входа отдельно. Если вы хотите написать «slice1 slice2» в качестве входа, вы можете разделить временные интервалы на пробелы и запустить на выходе (вам также нужно будет удалить «срез» из ключа, заданного на глобальные) –

+0

Я хочу написать slice1 и я получаю 'a1' 'a2' 'a3' – a7me3D

0

Я не уверен, что я полностью понял ваш вопрос.

Что об этом решении:

List = [['a1', 'a2', 'a3'], ['b1', 'b2', 'b3']] 
slice1 = List[0] 
slice2 = List[1] 
user_input = input("slice number") 

if user_input == 'slice1': 
    for item in slice1: 
     print item 
elif user_input == 'slice2': 
    for item in slice2: 
     print item 
else: 
    print "Slice not found :(" 
+0

это выполняется, когда у меня есть только два списка, но когда у меня есть список +500, что я могу сделать. . Я ищу метод, чтобы пользователь вводил как переменную, чтобы не писать условие elif: traitingment для каждой переменной – a7me3D