Python 3.x 函数的作用是:在用于Raspberry Pi的python 3脚本中,不将输入转换为小写

Python 3.x 函数的作用是:在用于Raspberry Pi的python 3脚本中,不将输入转换为小写,python-3.x,input,lowercase,raspberry-pi3,Python 3.x,Input,Lowercase,Raspberry Pi3,我有一个RGB LED连接到一个树莓皮3与以下代码。我想做的是向用户提出一个问题,选择红色、绿色或蓝色,对应于链接到特定GPIO引脚的变量 当用户输入红色时,LED将变为红色。当它们进入蓝色时,LED将变为蓝色。 当前,如果输入红色,代码将打印“20”(整数),对应于车身控制模块针脚20。这很好,但我的问题是,我无法首先将用户的字符串响应转换为小写(即,将红色转换为红色) 我得到一个错误: request = input("Choose a color. Red/Green/Blue".low

我有一个RGB LED连接到一个树莓皮3与以下代码。我想做的是向用户提出一个问题,选择红色、绿色或蓝色,对应于链接到特定GPIO引脚的变量

当用户输入红色时,LED将变为红色。当它们进入蓝色时,LED将变为蓝色。

当前,如果输入红色,代码将打印“20”(整数),对应于车身控制模块针脚20。这很好,但我的问题是,我无法首先将用户的字符串响应转换为小写(即,将红色转换为红色)

我得到一个错误:

request =  input("Choose a color. Red/Green/Blue".lower())
File "<string>", line 1, in <module>
NameError: name 'Red' is not defined
任何帮助都将不胜感激

这不是蟒蛇3。 Python的3“输入”将返回一个字符串,然后您可以将其转换为小写-但是您的代码中没有任何内容,因为给定一个具有颜色名称的
字符串
,检索与具有相同名称的变量相关联的组件

另一方面,Python2的输入执行
eval
,在返回结果之前,以Python表达式的形式运行用户键入的任何内容。因此,当用户在
red
中键入时,它将为您提供关联值
20
。(对该值的较低调用将失败)

你必须在那里做的是: 编写能够在Python2或Python3中工作的代码,其次,在给定用户类型字符串的情况下,创建一致的机制来检索颜色。对于最后一部分,推荐的方法是使用字典映射将颜色名称和值关联起来,而不是直接作为变量

因此:


你确定你使用的是Python 3吗?可能是重复的谢谢你…据我所知,它是Python 3。我读过这篇文章,但它并没有真正回答我的问题。如果我更改为原始输入(“这里的问题”),我可以得到类似的结果,但是我必须编写额外的代码。我希望自动将用户的输入更改为小写,然后将其转换为变量的值16、20、21。我希望这有道理。更好的方法是使用字典。类似于
colors={'red':20,'green':16,'blue':21}
。然后,使用
colors[raw_input(…).lower()]
;我很高兴能帮上忙。请注意,如果用户键入的内容错误,则会出现错误。当然,正确的处理方法可能是使用
try
-
除了
块,但也可以使用
colors.get(raw_input(…).lower())
作为默认值,或者为
.get()
提供第二个参数作为默认值。非常感谢。这很容易理解。在“while True;”中在代码部分,您编写了“color=color[request.lower()]应该是color=colors[request.lower()]”吗?(带“S”)
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:
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:
        ...