按下按钮时中断 while 循环
Break a while loop when a button is pressed
我目前正在尝试设置此代码,以便在这种情况下 button1
连接到 RPi GPIO 的按钮运行函数 c1
并一直循环该函数直到另一个按钮 button2
被按下,然后它运行函数 c2
在该函数中保持循环。
#Import RPi GPIO module
from gpiozero import Button
#Assign name to buttons GPIO pins
button1 = Button(2)
button2 = Button(4)
def c1():
while True:
print('c1')
grade = float(input('Select grade: '))
if grade < 10:
print('Less than 10')
else:
print ('invalid input')
def c2():
while True:
print('c2')
grade = float(input('Select grade: '))
if grade < 10:
print('Less than 10')
else:
print ('invalid input')
我遇到了破坏函数 c1
的麻烦,我尝试在按下另一个按钮时在 while
中添加一个 break
,但没有任何运气,因为代码没有'不要停下来。
def c1():
while True:
print('c1')
grade = float(input('Select grade: '))
if grade < 10:
print('Less than 10')
elif button2.is_pressed:
break
我也试过用这个来打破循环,但我什至不确定这是不是一个正确的方法,无论如何它没有用。
def c1():
while True:
print('c1')
grade = float(input('Select grade: '))
if grade < 10:
print('Less than 10')
elif button2.is_pressed:
c1() == False
break
我不确定是否正确,但我觉得必须改变函数让我们假设 c1
到 False
来打破循环。我希望在按下新按钮后告诉代码停止循环,但它没有成功。
我在这里错过了什么?
你的程序调试了吗?你检查过 break
被调用了吗?
它可能会帮助您找到问题。
您还可以打印:button2.is_pressed
以了解发生了什么。
如果这是 确切的 代码,那么您可能会注意到 break
在 while
循环之外。
def c1():
while True:
print('c1')
grade = float(input('Select grade: '))
if grade < 10:
print('Less than 10')
elif button2.is_pressed:
break
同时,在这段代码中,您需要在while
循环之前设置boolean
变量,然后将其设置为false。如果您使用此方法,则不需要 break
,因为一旦变量设置为 false,该函数将中断 while
循环。
def c1():
while True:
print('c1')
grade = float(input('Select grade: '))
if grade < 10:
print('Less than 10')
elif button2.is_pressed:
c1() == False
break
试试这个:
def c1():
flag = True
while flag == True:
print('c1')
grade = float(input('Select grade: '))
if grade < 10:
print('Less than 10')
elif button2.is_pressed: #try using if here instead of elif
flag = False
或者这样:
def c1():
while True:
print('c1')
grade = float(input('Select grade: '))
if grade < 10:
print('Less than 10')
elif button2.is_pressed: #try using if here instead of elif
break
编辑:也许您错过了 elif
,如果不起作用,请尝试使用 if
。
编辑 2:进一步的问题。
def c1():
while True:
print('c1')
if button2.is_pressed:
break
grade = float(input('Select grade: '))
if grade < 10:
print('Less than 10')
我目前正在尝试设置此代码,以便在这种情况下 button1
连接到 RPi GPIO 的按钮运行函数 c1
并一直循环该函数直到另一个按钮 button2
被按下,然后它运行函数 c2
在该函数中保持循环。
#Import RPi GPIO module
from gpiozero import Button
#Assign name to buttons GPIO pins
button1 = Button(2)
button2 = Button(4)
def c1():
while True:
print('c1')
grade = float(input('Select grade: '))
if grade < 10:
print('Less than 10')
else:
print ('invalid input')
def c2():
while True:
print('c2')
grade = float(input('Select grade: '))
if grade < 10:
print('Less than 10')
else:
print ('invalid input')
我遇到了破坏函数 c1
的麻烦,我尝试在按下另一个按钮时在 while
中添加一个 break
,但没有任何运气,因为代码没有'不要停下来。
def c1():
while True:
print('c1')
grade = float(input('Select grade: '))
if grade < 10:
print('Less than 10')
elif button2.is_pressed:
break
我也试过用这个来打破循环,但我什至不确定这是不是一个正确的方法,无论如何它没有用。
def c1():
while True:
print('c1')
grade = float(input('Select grade: '))
if grade < 10:
print('Less than 10')
elif button2.is_pressed:
c1() == False
break
我不确定是否正确,但我觉得必须改变函数让我们假设 c1
到 False
来打破循环。我希望在按下新按钮后告诉代码停止循环,但它没有成功。
我在这里错过了什么?
你的程序调试了吗?你检查过 break
被调用了吗?
它可能会帮助您找到问题。
您还可以打印:button2.is_pressed
以了解发生了什么。
如果这是 确切的 代码,那么您可能会注意到 break
在 while
循环之外。
def c1():
while True:
print('c1')
grade = float(input('Select grade: '))
if grade < 10:
print('Less than 10')
elif button2.is_pressed:
break
同时,在这段代码中,您需要在while
循环之前设置boolean
变量,然后将其设置为false。如果您使用此方法,则不需要 break
,因为一旦变量设置为 false,该函数将中断 while
循环。
def c1():
while True:
print('c1')
grade = float(input('Select grade: '))
if grade < 10:
print('Less than 10')
elif button2.is_pressed:
c1() == False
break
试试这个:
def c1():
flag = True
while flag == True:
print('c1')
grade = float(input('Select grade: '))
if grade < 10:
print('Less than 10')
elif button2.is_pressed: #try using if here instead of elif
flag = False
或者这样:
def c1():
while True:
print('c1')
grade = float(input('Select grade: '))
if grade < 10:
print('Less than 10')
elif button2.is_pressed: #try using if here instead of elif
break
编辑:也许您错过了 elif
,如果不起作用,请尝试使用 if
。
编辑 2:进一步的问题。
def c1():
while True:
print('c1')
if button2.is_pressed:
break
grade = float(input('Select grade: '))
if grade < 10:
print('Less than 10')