将整数添加到字符串后,在类中使用它时会出现错误

2024-09-22 16:41:06 发布

您现在位置:Python中文网/ 问答频道 /正文

import pigpio
import time
pi = pigpio.pi()
L1 = 2
L2 = 3
L3 = 4
L4 = 17
L5 = 27
L6 = 22
L7 = 10
R1 = 9
R2 = 18
R3 = 23
R4 = 24
R5 = 25
R6 = 8
R7 = 7
On = 255
Off = 0
sleepTime = 0.05
class ledControll:
    def pinClean(self):
        pi.set_PWM_dutycycle(L1 , Off)
        pi.set_PWM_dutycycle(L2 , Off)
        pi.set_PWM_dutycycle(L3 , Off)
        pi.set_PWM_dutycycle(L4 , Off)
        pi.set_PWM_dutycycle(L5 , Off)
        pi.set_PWM_dutycycle(L6 , Off)
        pi.set_PWM_dutycycle(L7 , Off)
        pi.set_PWM_dutycycle(R1 , Off)
        pi.set_PWM_dutycycle(R2 , Off)
        pi.set_PWM_dutycycle(R3 , Off)
        pi.set_PWM_dutycycle(R4 , Off)
        pi.set_PWM_dutycycle(R5 , Off)
        pi.set_PWM_dutycycle(R6 , Off)
        pi.set_PWM_dutycycle(R7 , Off)  
    def LEDOn(self , column , rows):
        pi.set_PWM_dutycycle(column , On)
        pi.set_PWM_dutycycle(rows , On)
    def LEDOff(self , column , row):
        pi.set_PWM_dutycycle(column , Off)
        pi.set_PWM_dutycycle(row , Off)
try:
    led = ledControll()
    while True:
        for i in range(1 , 7):
            row = "R" + str(i)
            led.LEDOn(L1 , row)
except KeyboardInterrupt:
    led.pinClean()
pi.stop()

这是我在python中的代码,当我运行此命令时,我得到以下错误: struct.error:无法将参数转换为整数 我想用led指示灯将R1设置为R7(L1,R1到R7) 当我打印行时,它给我R1到R7 我是python新手


Tags: importselfl1ledondefpicolumn
1条回答
网友
1楼 · 发布于 2024-09-22 16:41:06

row = "R" + str(i)不会导致row引用任何名称以“R”开头的变量。当你需要做led.LEDOn(L1, R1)时,你实际上在做led.LEDOn(L1, "R1")

你可能会想,“好吧,那么我如何得到一个变量,给定一个包含其名称的字符串?”这在问题How do I create a variable number of variables?中有详细的介绍,但简单的回答是:不要有一堆只相差一个数字的变量;改用字典或列表

在你的特殊情况下,你可以做一些

Rs = [9, 18, 23, 24, 25, 8, 7]

在你文件的最上面

for R in Rs:
    led.LEDOn(L1, R)

在你的职责范围内

这还有一个额外的好处,那就是使pinClean方法变得更短:

def pinClean(self):
    for L in Ls:
        pi.set_PWM_dutycycle(L, Off)
    for R in Rs:
        pi.set_PWM_dutycycle(R, Off)

(。。。前提是您还决定将L变量放入一个列表中)

相关问题 更多 >