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()]
这也是一个优雅的解决方案!我用你的代码重新设计了输入检查。