Python 3.6字符串输入

Python 3.6字符串输入,python,python-3.x,raspberry-pi,raspberry-pi3,Python,Python 3.x,Raspberry Pi,Raspberry Pi3,我正在使用Raspberry Pi 3,并用Python控制三个LED。 我可以说我擅长Python。这是我的密码: import RPi.GPIO as GPIO import time #GPIO Pins GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) GPIO.setup(17,GPIO.OUT) GPIO.setup(27,GPIO.OUT) GPIO.setup(22,GPIO.OUT) def led(color,state):

我正在使用Raspberry Pi 3,并用Python控制三个LED。 我可以说我擅长Python。这是我的密码:

import RPi.GPIO as GPIO
import time

#GPIO Pins
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(17,GPIO.OUT)
GPIO.setup(27,GPIO.OUT)
GPIO.setup(22,GPIO.OUT)

def led(color,state):
    if state == "on":
        if color == "g": #green
            GPIO.output(27,GPIO.HIGH)
        elif color == "y": #yellow
            GPIO.output(22,GPIO.HIGH)
        elif color == "r": #red
            GPIO.output(17,GPIO.HIGH)
        print ("LED on")
    elif state == "off":
        if color == "g":
            GPIO.output(27,GPIO.LOW)
        elif color == "y":
            GPIO.output(22,GPIO.LOW)
        elif color == "r":
            GPIO.output(17,GPIO.LOW)
        print ("LED off")

while True:
    leds_col = input("Color (r, g, y): ")
    leds_stat = input("On or Off: ")
    led(leds_col, leds_stat)
我有一个名为led的函数,它有两个参数,颜色g、y或r和状态on或off。在while循环中,led\u col请求控制台中的颜色,led\u stat请求状态。 现在,我想要实现的不是要求不同线路的颜色和另一线路的led状态,而是将两者结合起来。例如,我在控制台上写:

g, on
它会打开绿色LED。 我知道我可以使用if语句,如: 如果led_输入==g,打开:GPIO.output27,GPIO.HIGH 但我相信有更好的方法可以做到这一点。

使用:

如果给出无效输入,将继续询问,直到输入有效。 有关输入验证的更多想法,请参阅

不相关-但您可以优化led功能:

def led(color,state):
    d = {"on":GPIO.HIGH, "off":GPIO.LOW,
         "g":27, "y":22, "r":17}

    for c in color:
        GPIO.output(d[c],d[state])
    print("LED",color,state)
使用查找词典:请参见使用:

如果给出无效输入,将继续询问,直到输入有效。 有关输入验证的更多想法,请参阅

不相关-但您可以优化led功能:

def led(color,state):
    d = {"on":GPIO.HIGH, "off":GPIO.LOW,
         "g":27, "y":22, "r":17}

    for c in color:
        GPIO.output(d[c],d[state])
    print("LED",color,state)

通过使用查找字典:请参见

,这种方法可能会有所帮助。通过获取两个中间有空格的输入。可以基于空格或任何其他字符分割输入。然后将颜色和状态放入两个不同的变量中

>>> leds_col,leds_stat = input('Color(r,g,y) and State(on,off):').split(' ')
Color(r,g,y) and State(on,off):g on
>>> print(leds_col)
g
>>> print(leds_stat)
on
>>> 

或者,您也可以使用逗号或任何其他字符作为颜色和状态之间的分隔符。

这种方法可能会有所帮助。通过获取两个中间有空格的输入。可以基于空格或任何其他字符分割输入。然后将颜色和状态放入两个不同的变量中

>>> leds_col,leds_stat = input('Color(r,g,y) and State(on,off):').split(' ')
Color(r,g,y) and State(on,off):g on
>>> print(leds_col)
g
>>> print(leds_stat)
on
>>> 
或者,您也可以使用逗号或任何其他字符作为颜色和状态之间的分隔符。

将能够将单行输入拆分为两个或多个变量:

>>> inp = input()
1,2
>>> inp
'1,2'
>>> a, b = inp.split(',')
>>> a
'1'
>>> b
'2'
将能够将单行输入拆分为两个或多个变量:

>>> inp = input()
1,2
>>> inp
'1,2'
>>> a, b = inp.split(',')
>>> a
'1'
>>> b
'2'

谢谢你!工作完美无瑕。但是如果我想一次打开多个LED,比如rgy打开,怎么样?@NourTheDev您需要增强“确定”检查,以同时传递多个颜色值并循环所有给定的颜色-请参阅“编辑”。谢谢!工作完美无瑕。但是如果我想一次打开多个LED,比如rgy on,那该怎么办?@NourTheDev您需要增强ok检查,以同时传递多个颜色值并循环所有给定的颜色-请参见编辑。