Python脚本不更新变量

Python脚本不更新变量,python,python-3.x,variables,Python,Python 3.x,Variables,我正试图通过一个io.output()函数,让Raspberry Pi(型号B+)通过GPIO打开用户选择的LED。然而,我很难让我的脚本这样做。脚本是用Python3编写的 # Set GPIO pins for each color red = 11 yellow = 9 green = 10 # etc... # LEDs are set as output io.setup(red, io.OUT) io.setup(yellow, io.OUT) io.setup(green, io

我正试图通过一个
io.output()
函数,让Raspberry Pi(型号B+)通过GPIO打开用户选择的LED。然而,我很难让我的脚本这样做。脚本是用Python3编写的

# Set GPIO pins for each color
red = 11
yellow = 9
green = 10
# etc...

# LEDs are set as output
io.setup(red, io.OUT)
io.setup(yellow, io.OUT)
io.setup(green, io.OUT)
# etc...

# Function
def phase(color):
    io.output(color, io.HIGH)

color = input("Please choose a color like red, yellow, green, ...: ")
我试图做到的是:根据用户的选择,特定的LED灯打开

用户可以选择10种颜色

我知道这可以通过设置:

if color == 'red':
    io.output(red, io.HIGH)
elif color == 'yellow':
    io.output(yellow, io.HIGH)
elif color == 'green':
    io.output(green, io.HIGH)
#etc...
但我只希望有一行代码,其中变量
color
根据用户选择的颜色进行更新:

io.output(color, io.HIGH)
似乎在Python3中设置变量的工作原理与我所想的略有不同(我已经习惯了PHP,在Python3中还没有那么丰富的经验)

我希望Python将变量
color
处理为用户输入(比如“red”),然后将其处理为相应的GPIO pin号,即
11

然而,这并没有发生,我也不知道为什么。我不断收到错误,告诉我
color
应该是一个整数。我认为本例中的变量的工作方式类似于
color=red=11


如何在
io.output()函数中传递变量?这是可能的,还是我不得不为每个彩色LED写一行代码?这对我来说似乎是多余的,但可能我在这里完全错了。

您的变量
color
包含一个字符串。您似乎需要某种方法将该字符串映射为整数。(
dict
)将非常适合这一点,并允许一些其他优化:

# Set GPIO pins for each color
colors = {
    'red': 11,
    'yellow': 9,
    'green': 10,
    # etc...
}

# LEDs are set as output
[io.setup(v, io.OUT) for k,v in colors]

# Function
def phase(color):
    io.output(colors[color], io.HIGH)

color = input("Please choose red, yellow or green: ")
phase(color)

可以使用字典将字符串转换为整数

all_colors = {
    "red": 11,
    "yellow": 9,
    "green": 10
}

color = input("Please choose a color like red, yellow, green, ...: ")
color = color.lower().strip()

if color in all_colors:
    value = all_colors[color]
    io.output( value, io.HIGH )
else:
    print("unknown color")

您可以创建字典
{“red”:11,…}
来转换它,然后您就可以使用它了。谢谢!真不敢相信我错过了整个字符串对变量的比赛。。您的代码非常有用,但必须稍加改进才能在Python3中完美无瑕:
[io.setup(v,io.OUT)for k,v in colors.items()]
这也是一个优雅的解决方案!我用你的代码重新设计了输入检查。