Как использовать функцию ввода для вызова значения переменной? - PullRequest
0 голосов
/ 13 марта 2019

Оригинальный вопрос

Это написано на Python 2 с использованием Jupyter Notebook.Я заранее извиняюсь, если формулировки / термины нетрадиционны.Я новичок и не знаю большинства соглашений по кодированию.

blue = 24
red = 18

color = input('What color would you like to know the value for? \n')
print (color)

Я хотел бы иметь возможность запустить код, ввести «синий» и напечатать его 24.

РЕДАКТИРОВАТЬ:

В идеале мне бы не хотелось составлять словарь.Это упрощение моего реального кода.У меня уже есть много, много определенных переменных (некоторые определения требуют ввода данных пользователем), и было бы очень неудобно создавать словарь, из которого.

Это мой (более реалистичный) код:

blue = input('What is the value of blue?')
green = input('What is the value of blue?')
cyan = blue*green

color = input('What color would you like to know the value for? \n')
print (color)

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

пример: беги.вход 3. вход 5. вход циан.отпечатки кодов 15

Ответы [ 4 ]

1 голос
/ 13 марта 2019

Используйте raw_input. input переопределит существующее значение в хорошем случае, а в худшем случае повысит значение NameError. Затем попробуйте получить значение из locals():

blue = 24
red = 18

color = raw_input('What color would you like to know the value for? \n')
try:
   print locals()[color] 
except KeyError:
   print 'Color {} is not defined'.format(color)

Обратите внимание , что это в значительной степени хак, и, используя этот способ, пользователь сможет получить доступ к любой определенной локальной переменной. Если вы хотите ограничить доступ пользователя, то используйте предопределенный словарь, как предлагают некоторые другие ответы.

0 голосов
/ 13 марта 2019

Я бы использовал словарь для этого

#!/usr/bin/env python

options = {"blue":24, "red":18}

answer = raw_input('What color would you like to know the value for? \n')

print(options[answer])

Вы можете получить доступ к переменной буквально с помощью eval или locals.Но это обычно считается плохой идеей, если у вас нет другого выбора.Я также утверждал бы, что это более сложно без какой-либо реальной причины.

Объяснение того, что происходит:

Мы создаем новый словарь под названием options, с "blue" и "red" в качестве ключейи 24 и 18 как его значения соответственно.

Теперь, когда мы хотим получить наш ответ, мы можем получить к нему доступ с помощью options[answer], что совпадает с options["blue"], поскольку я дал "синий" в качестве ответа для ввода.

Результат:

What color would you like to know the value for? 
blue
24

Примечания:

Если вы используете Python 2, используйте raw_input вместо input.Это очень простое решение, и если пользователь вводит что-либо, кроме «синего» или «красного», сценарий выдаст KeyError.Я бы начал с Я получаю сообщение об ошибке ключа в python для заметок о том, как с этим справиться.

0 голосов
/ 13 марта 2019

Попробуйте этот код!Вам нужно использовать условный оператор (if clause), чтобы проверить, что введенное пользователем значение равно blue.Если значение равно true, выведите значение переменной blue.

Код:

blue = 24
red = 18

color = input('What color would you like to know the value for? \n')
if (color==blue):
    print(blue)

Выход:

What color would you like to know the value for?                                                                       
blue                                                                                                                   
24 
0 голосов
/ 13 марта 2019

сделать из словаря

colour_dict = {'blue': 24, 'red': 18}

colour = input('what colour...')

print('your colour: ', colour, 'is number: ', colour_dict[colour])
...