python 3 脚本中的 lower() 函数未将输入转换为小写 Raspberry Pi
lower() function not converting input to lowercase in python 3 script for Raspberry Pi
我使用以下代码将 RGB LED 连接到 Raspberry Pi 3。我想要做的是向用户提出一个问题,让他们选择红色、绿色或蓝色,对应于链接到特定 GPIO 引脚的变量。
当用户输入Red时,LED会变成红色。当他们输入蓝色时,LED 将变为蓝色。
目前,如果我输入红色,代码将打印“20”(整数),它对应于 BCM 引脚 20。这很好,但我的问题是我无法将用户的字符串响应转换为小写优先。 (即,将 RED 转换为红色)。
我收到一个错误:
request = input("Choose a color. Red/Green/Blue".lower())
File "<string>", line 1, in <module>
NameError: name 'Red' is not defined
下面的代码是最简单的形式,首先测试我可以从用户那里获得小写输入。
red = 20
green = 16
blue = 21
try:
while True:
# I would like to convert user's answer (Red, Green,Blue) to a lowercase answer (ie. red, green blue)
request = input("Choose a color. Red/Green/Blue").lower()
print(type(request))
print(request)
except KeyboardInterrupt:
如有任何帮助,我们将不胜感激。
这不是 Python3。
Python's 3 "input" 会 return 你一个字符串,然后你可以将其转换为小写 - 但你的代码没有任何内容,给定一个 string
颜色名称,检索与具有相同名称的变量关联的内容。
另一方面,Python 2 的输入执行 eval
、运行,无论用户输入什么 Python 表达式,在 [=30= 之前] 结果。因此,当用户输入 red
时,它会给你相关的值 20
。 (并且对此值的较低调用将失败)。
你要做的是:
编写将在 Python2 或 Python3 中工作的代码,其次,建立一个一致的机制来检索给定用户键入的字符串的颜色。对于最后一部分,推荐的方法是使用字典映射来关联颜色名称和值,而不是直接作为变量。
所以:
try:
input = raw_input
except NameError:
pass
colors = dict(
red = 20,
green = 16,
blue = 21,
)
try:
while True:
request = input("Choose a color. Red/Green/Blue")
color = colors[request.lower()]
...
except NameError:
print("Invalid color name selected")
except KeyboardInterrupt:
...
我使用以下代码将 RGB LED 连接到 Raspberry Pi 3。我想要做的是向用户提出一个问题,让他们选择红色、绿色或蓝色,对应于链接到特定 GPIO 引脚的变量。
当用户输入Red时,LED会变成红色。当他们输入蓝色时,LED 将变为蓝色。
目前,如果我输入红色,代码将打印“20”(整数),它对应于 BCM 引脚 20。这很好,但我的问题是我无法将用户的字符串响应转换为小写优先。 (即,将 RED 转换为红色)。
我收到一个错误:
request = input("Choose a color. Red/Green/Blue".lower())
File "<string>", line 1, in <module>
NameError: name 'Red' is not defined
下面的代码是最简单的形式,首先测试我可以从用户那里获得小写输入。
red = 20
green = 16
blue = 21
try:
while True:
# I would like to convert user's answer (Red, Green,Blue) to a lowercase answer (ie. red, green blue)
request = input("Choose a color. Red/Green/Blue").lower()
print(type(request))
print(request)
except KeyboardInterrupt:
如有任何帮助,我们将不胜感激。
这不是 Python3。
Python's 3 "input" 会 return 你一个字符串,然后你可以将其转换为小写 - 但你的代码没有任何内容,给定一个 string
颜色名称,检索与具有相同名称的变量关联的内容。
Python 2 的输入执行 eval
、运行,无论用户输入什么 Python 表达式,在 [=30= 之前] 结果。因此,当用户输入 red
时,它会给你相关的值 20
。 (并且对此值的较低调用将失败)。
你要做的是: 编写将在 Python2 或 Python3 中工作的代码,其次,建立一个一致的机制来检索给定用户键入的字符串的颜色。对于最后一部分,推荐的方法是使用字典映射来关联颜色名称和值,而不是直接作为变量。
所以:
try:
input = raw_input
except NameError:
pass
colors = dict(
red = 20,
green = 16,
blue = 21,
)
try:
while True:
request = input("Choose a color. Red/Green/Blue")
color = colors[request.lower()]
...
except NameError:
print("Invalid color name selected")
except KeyboardInterrupt:
...