请求与 Raspberry Pi 上的 RGB LED 相关的整数时出错
Error during request for integers relating to RGB LED on Raspberry Pi
我有一个 Raspberry Pi 3,我正在使用 Python 3 编写代码。我在我的代码中添加了一个请求,要求用户输入三个数字来指定 R, G 或 B 打开或关闭(0 = 关闭,1 = 打开)。例如 101 表示 R = 开,B = 关,G = 开。
但是我一直收到错误,我认为这与我使用的 python 版本有关 (Python 3):
TypeError: object of type 'int' has no len()
我在这里关注了一个 youtube 教程:Controlling a RGB LED with a raspberry pi
import time
import RPi.GPIO as GPIO
R = 16
G = 20
B = 21
GPIO.setmode(GPIO.BCM)
GPIO.setup(R,GPIO.OUT)
GPIO.setup(G,GPIO.OUT)
GPIO.setup(B,GPIO.OUT)
GPIO.output(R,GPIO.HIGH)
GPIO.output(G,GPIO.HIGH)
GPIO.output(B,GPIO.HIGH)
def clearCh():
GPIO.cleanup(R)
GPIO.cleanup(G)
GPIO.cleanup(B)
try:
while True:
request = input("RGB-->")
if (len(request) == 3):
GPIO.output(R, int(request[0]))
GPIO.output(G, int(request[1]))
GPIO.output(B, int(request[2]))
except KeyboardInterrupt:
clearCh()
任何能为我指明正确方向的提示都将不胜感激。
请注意,我还尝试了以下操作:if (len(str(request)) == 3):
出现了以下错误:
TypeError: 'int' object has no attribute '__getitem__'
python 内置函数 len()
似乎不适用于整数。所以你可能想要做的是在测量长度之前确保它是一个字符串。
try:
while True:
request = str(input("RGB-->"))
if (len(request) == 3):
GPIO.output(R, int(request[0]))
GPIO.output(G, int(request[1]))
GPIO.output(B, int(request[2]))
except KeyboardInterrupt:
clearCh()
TypeError: object of type 'int' has no len()
似乎input
返回的数据是整数(数据类型),例如您输入的101
。您可以尝试将 input
返回的数据转换为字符串(另一种数据类型),但您需要以该格式存储它以对其进行索引。执行 len(str(request))
只会将 request
中的数据转换为该行代码的字符串,不会影响 request
对象。
try:
while True:
request = input("RGB-->")
request = str(request)
if (len(request) == 3):
GPIO.output(R, int(request[0]))
GPIO.output(G, int(request[1]))
GPIO.output(B, int(request[2]))
当您将 request
作为等于 101
的字符串数据类型时,则 request[0]
指向最左侧 1
,request[1]
指向0
,依此类推。最后,int()
将这些数字字符串转换为整数数据类型。
此外,不要忘记缩进 if
块下的代码行。
最后,测试您正在使用的数据类型的一个好方法是使用 type()
命令。作为实验(或作为 "sanity check"),您可以在将代码转换为字符串之前和之后将 type(request)
添加到代码中。
我有一个 Raspberry Pi 3,我正在使用 Python 3 编写代码。我在我的代码中添加了一个请求,要求用户输入三个数字来指定 R, G 或 B 打开或关闭(0 = 关闭,1 = 打开)。例如 101 表示 R = 开,B = 关,G = 开。
但是我一直收到错误,我认为这与我使用的 python 版本有关 (Python 3):
TypeError: object of type 'int' has no len()
我在这里关注了一个 youtube 教程:Controlling a RGB LED with a raspberry pi
import time
import RPi.GPIO as GPIO
R = 16
G = 20
B = 21
GPIO.setmode(GPIO.BCM)
GPIO.setup(R,GPIO.OUT)
GPIO.setup(G,GPIO.OUT)
GPIO.setup(B,GPIO.OUT)
GPIO.output(R,GPIO.HIGH)
GPIO.output(G,GPIO.HIGH)
GPIO.output(B,GPIO.HIGH)
def clearCh():
GPIO.cleanup(R)
GPIO.cleanup(G)
GPIO.cleanup(B)
try:
while True:
request = input("RGB-->")
if (len(request) == 3):
GPIO.output(R, int(request[0]))
GPIO.output(G, int(request[1]))
GPIO.output(B, int(request[2]))
except KeyboardInterrupt:
clearCh()
任何能为我指明正确方向的提示都将不胜感激。
请注意,我还尝试了以下操作:if (len(str(request)) == 3):
出现了以下错误:
TypeError: 'int' object has no attribute '__getitem__'
python 内置函数 len()
似乎不适用于整数。所以你可能想要做的是在测量长度之前确保它是一个字符串。
try:
while True:
request = str(input("RGB-->"))
if (len(request) == 3):
GPIO.output(R, int(request[0]))
GPIO.output(G, int(request[1]))
GPIO.output(B, int(request[2]))
except KeyboardInterrupt:
clearCh()
TypeError: object of type 'int' has no len()
似乎input
返回的数据是整数(数据类型),例如您输入的101
。您可以尝试将 input
返回的数据转换为字符串(另一种数据类型),但您需要以该格式存储它以对其进行索引。执行 len(str(request))
只会将 request
中的数据转换为该行代码的字符串,不会影响 request
对象。
try:
while True:
request = input("RGB-->")
request = str(request)
if (len(request) == 3):
GPIO.output(R, int(request[0]))
GPIO.output(G, int(request[1]))
GPIO.output(B, int(request[2]))
当您将 request
作为等于 101
的字符串数据类型时,则 request[0]
指向最左侧 1
,request[1]
指向0
,依此类推。最后,int()
将这些数字字符串转换为整数数据类型。
此外,不要忘记缩进 if
块下的代码行。
最后,测试您正在使用的数据类型的一个好方法是使用 type()
命令。作为实验(或作为 "sanity check"),您可以在将代码转换为字符串之前和之后将 type(request)
添加到代码中。