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