我的 While True 循环卡在 python
My While True loop is getting stuck in python
你好,我一直在为我的 python 代码中的主文件开发一个无限的 While True 循环。我正在研究 Raspberry Pi,我的目标是只要其中一个 GPIO 引脚检测到输入,它就会打印出一个字符串。然而,当我按下一个按钮时,它会无限地打印它,停止它的唯一方法是按 Ctrl-C。当它一遍又一遍地打印相同的字符串时,没有其他按钮会改变发生的事情。我做错了什么我忘记了某处的步骤吗?
import RPi.GPIO as GPIO
import time
from time import sleep
GPIO.setmode(GPIO.BCM)
GPIO.setup(26, GPIO.IN)
GPIO.setup(19, GPIO.IN)
GPIO.setup(13, GPIO.IN)
GPIO.setup(6, GPIO.IN)
input_A = GPIO.input(26)
input_B = GPIO.input(19)
input_C = GPIO.input(13)
input_D = GPIO.input(6)
while True:
if input_A == True:
print('A was pushed')
if input_B == True:
print('B was pushed')
if input_C == True:
print('C was pushed')
if input_D == True:
print('D was pushed')
sleep(1.5);
您需要不断更新 while 循环中的 input_*
变量
while True:
input_A = GPIO.input(26)
input_B = GPIO.input(19)
input_C = GPIO.input(13)
input_D = GPIO.input(6)
if input_A == True:
print('A was pushed')
if input_B == True:
print('B was pushed')
if input_C == True:
print('C was pushed')
if input_D == True:
print('D was pushed')
sleep(1.5);
在每个 if 语句下的 break
语句处。当你这样做时,将倒数第二个 ifs 更改为 elifs。
while True:
if input_A == True:
print('A was pushed')
break
elif input_B == True:
print('B was pushed')
break
elif input_C == True:
print('C was pushed')
break
elif input_D == True:
print('D was pushed')
break
申报时
input_A = GPIO.input(26)
input_B = GPIO.input(19)
input_C = GPIO.input(13)
input_D = GPIO.input(6)
您正在为那些不会更改的变量赋值,因为您没有在循环内更新它们。
因此,您需要在循环中添加一行来更新输入 A B C 和 D。
为什么不尝试为每个 if 语句引入一个 break。它应该阻止它无限循环。
并更新您的变量,即输入应该在 while 循环中。
例如
if input_A == True:
print('A was pushed')
break
你好,我一直在为我的 python 代码中的主文件开发一个无限的 While True 循环。我正在研究 Raspberry Pi,我的目标是只要其中一个 GPIO 引脚检测到输入,它就会打印出一个字符串。然而,当我按下一个按钮时,它会无限地打印它,停止它的唯一方法是按 Ctrl-C。当它一遍又一遍地打印相同的字符串时,没有其他按钮会改变发生的事情。我做错了什么我忘记了某处的步骤吗?
import RPi.GPIO as GPIO
import time
from time import sleep
GPIO.setmode(GPIO.BCM)
GPIO.setup(26, GPIO.IN)
GPIO.setup(19, GPIO.IN)
GPIO.setup(13, GPIO.IN)
GPIO.setup(6, GPIO.IN)
input_A = GPIO.input(26)
input_B = GPIO.input(19)
input_C = GPIO.input(13)
input_D = GPIO.input(6)
while True:
if input_A == True:
print('A was pushed')
if input_B == True:
print('B was pushed')
if input_C == True:
print('C was pushed')
if input_D == True:
print('D was pushed')
sleep(1.5);
您需要不断更新 while 循环中的 input_*
变量
while True:
input_A = GPIO.input(26)
input_B = GPIO.input(19)
input_C = GPIO.input(13)
input_D = GPIO.input(6)
if input_A == True:
print('A was pushed')
if input_B == True:
print('B was pushed')
if input_C == True:
print('C was pushed')
if input_D == True:
print('D was pushed')
sleep(1.5);
在每个 if 语句下的 break
语句处。当你这样做时,将倒数第二个 ifs 更改为 elifs。
while True:
if input_A == True:
print('A was pushed')
break
elif input_B == True:
print('B was pushed')
break
elif input_C == True:
print('C was pushed')
break
elif input_D == True:
print('D was pushed')
break
申报时
input_A = GPIO.input(26)
input_B = GPIO.input(19)
input_C = GPIO.input(13)
input_D = GPIO.input(6)
您正在为那些不会更改的变量赋值,因为您没有在循环内更新它们。
因此,您需要在循环中添加一行来更新输入 A B C 和 D。
为什么不尝试为每个 if 语句引入一个 break。它应该阻止它无限循环。
并更新您的变量,即输入应该在 while 循环中。
例如
if input_A == True:
print('A was pushed')
break