【问题标题】:How do I use the input function to call the value of a variable?如何使用输入函数调用变量的值?
【发布时间】:2019-03-13 11:06:57
【问题描述】:

原始问题

这是使用 Jupyter Notebook 在 Python 2 中编写的。如果措辞/术语非常规,我提前道歉。我是初学者,不了解大多数编码约定。

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)

我希望能够运行代码,输入青色并让它打印变量青色的数值。

示例:运行。输入 3. 输入 5. 输入青色。代码打印 15

【问题讨论】:

  • @SurajM 完全错误,尤其是考虑到如何实现这一目标已经有 3 个不同的答案

标签: python python-2.7 jupyter-notebook jupyter python-2.x


【解决方案1】:

使用raw_inputinput 将在好的情况下覆盖现有值,在更坏的情况下会引发 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)

注意,这几乎是一种 hack,使用这种方式,用户将能够访问定义的任何局部变量。如果您想限制用户可以访问的内容,请使用预定义的字典,就像其他一些答案所建议的那样。

【讨论】:

  • 这行得通,谢谢!我想我会在发布之前创建一个字典,但这肯定有助于 alpha。
【解决方案2】:

把它变成一本字典

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

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

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

【讨论】:

  • 由于 OP 使用的是 Python 2.X,所以应该使用raw_input 而不是input
【解决方案3】:

试试这个代码! 您需要使用条件语句(if 子句)来检查用户输入的值是否为blue。如果为真,则打印 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 

【讨论】:

  • 如果 OP 有 10 种颜色,你建议有 10 个 if 语句吗?
  • 不。在这种情况下,最好的解决方案是声明字典并通过其键获取字典的值。我根据目前的情况给出解决方案。
【解决方案4】:

我会为此使用字典

#!/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])

您可以使用evallocals 逐字访问该变量。但这通常被认为是一个坏主意,除非您实际上别无选择。我还认为它没有真正的原因更复杂。

对正在发生的事情的解释:

我们创建了一个名为 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。我会从 I'm getting Key error in python 开始,了解如何处理它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 2019-06-15
    相关资源
    最近更新 更多