gpt4 book ai didi

Python 脚本不更新变量

转载 作者:行者123 更新时间:2023-12-01 00:46:52 28 4
gpt4 key购买 nike

我正在尝试通过 io.output() 函数通过 GPIO 使 Raspberry Pi(型号 B+)打开用户选择的 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...

但我只想有 1 行代码,其中变量 color 根据用户选择的颜色进行更新:

io.output(color, io.HIGH)

似乎在 Python3 中设置变量的工作方式与我想象的有点不同(我已经习惯了 PHP,但在 Python3 中还没有那么丰富的经验)。

我希望 Python 将变量 color 处理为用户输入(假设为“红色”),随后应将其处理为相应的 GPIO 引脚号,即 11 .

但是这并没有发生,我不明白为什么。我不断收到错误消息,告诉我 color 应该是一个整数。我认为在这种情况下变量的工作方式类似于color = red = 11

如何在 io.output() 函数中传递变量?这是可能的还是我必须为每种颜色的 LED 编写一行代码?这对我来说似乎非常多余,但也许我完全错了。

最佳答案

您的变量color包含一个字符串。您似乎需要某种方法将该字符串映射到整数。一个dictionary (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)

关于Python 脚本不更新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56918632/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com