Python中退出循环的最优方式是什么?使用return是否可行?
Python循环退出方式相关解答
首先明确:可以用return语句实现退出,但需要先修复你现有代码的几处基础错误,否则任何退出逻辑都无法生效:
- 你初始化
on = bool()时,bool()默认返回False,while循环根本不会启动,需要把初始值改为on = True - 判断条件
gyro == angle逻辑错误,gyro是传感器对象,你需要读取它的实际角度值,比如gyro.angle()(具体API看你使用的硬件库定义) robot.off没有加括号,只是引用方法对象不会执行停止逻辑,需要写成robot.off()
常用的循环退出方案
- 修改标志位退出:你已经定义了
on控制变量,满足条件时把它设为False即可,可读性最高,适合循环结束后还要执行其他函数逻辑的场景
def gyro_turn_left (angle, speed, brake_at_end=True): Speed = speed gyro.reset() robot.MoveTank.on(Speed-Speed*Speed, Speed) on = True # 建议用>=避免陀螺仪读数跳变错过等于的临界值 while on: if gyro.angle() >= angle: robot.off() on = False # 循环退出后还可以执行刹车等后续逻辑 if brake_at_end: robot.brake()
- break关键字退出:直接终止当前层级的循环,不需要额外定义标志位,代码更简洁,是大多数场景下的最优选择
def gyro_turn_left (angle, speed, brake_at_end=True): Speed = speed gyro.reset() robot.MoveTank.on(Speed-Speed*Speed, Speed) while True: if gyro.angle() >= angle: robot.off() break if brake_at_end: robot.brake()
- return语句退出:会直接终止整个函数的执行,仅适合循环结束后不需要执行任何其他函数逻辑的场景,如果后续还要处理刹车等操作,不建议用这种方式
def gyro_turn_left (angle, speed, brake_at_end=True): Speed = speed gyro.reset() robot.MoveTank.on(Speed-Speed*Speed, Speed) while True: if gyro.angle() >= angle: robot.off() if brake_at_end: robot.brake() return
内容的提问来源于stack exchange,提问作者pikacoder
相关产品推荐
相关产品推荐

