ROS2机器人少年创客营:Python第二课

ROS2机器人少年创客营:Python第二课

课程名称

聪明的机器人------流程控制与逻辑

课程目标
  • 掌握布尔逻辑:理解"真"与"假"是计算机判断的基础。
  • 学会条件判断 :使用if、elif、else让机器人根据环境做出不同反应。
  • 理解循环结构 :使用while和for让机器人不知疲倦地重复工作。
  • 培养逻辑思维:能够画出简单的流程图,并将其转化为代码。
核心内容

机器人的智慧:布尔值

  • 概念:计算机的世界只有两个状态------开和关,真和假。
  • 数据类型 :bool(布尔型)。
    • True(真/是/1):比如"电量充足"。
    • False(假/否/0):比如"碰到墙壁"。
  • 比较运算符 :
    • ==(等于)、!=(不等于)、>(大于)、<(小于)。
    • 注意 :=是赋值(把东西放进盒子),==是判断(比较两个盒子里的东西是否一样)。

条件判断:如果...就...

  • 语法结构 :

    python 复制代码
    if 条件:
        做这件事
    else:
        做那件事
  • 缩进(Indentation) :

    • 比喻:这是Python的"家族族谱"。缩进(通常是4个空格或1个Tab)表示"属于"。
    • 规则 :if下面的代码必须缩进,表示"只有在满足条件时,才执行这些代码"。
  • 多路分支(elif) :

    • 就像红绿灯:如果是红灯->停;如果是绿灯->行;如果是黄灯->等待。

循环:不知疲倦的仆人

  • while循环(当...的时候) :
    • 比喻:只要(While)电池没电,就一直(循环)工作。
    • 死循环 :如果条件永远为真(比如while True),程序就会一直跑下去。这在机器人主程序中很常见(主循环)。
  • for循环(数数循环) :
    • 比喻:我要走5步。数1, 2, 3, 4, 5,每数一个数走一步。
    • 场景:遍历列表(比如:依次经过A点、B点、C点)。
实践环节

任务:编写"智能避障与巡逻"程序

  • 场景描述 :

    • 你的机器人在一条走廊里巡逻。
    • 它有一个传感器(变量distance)。
    • 如果前方无障碍(距离>10),它就继续前进。
    • 如果前方有障碍(距离<=10),它就停下来并发出警报。
    • 这个过程需要一直重复(循环)。
  • 代码实现 :

    python 复制代码
    # 模拟传感器数据
    distance = 50
    
    print("机器人巡逻系统启动...")
    
    # 模拟一直运行的主循环
    # 在实际操作中,我们通常用 while True 让机器人一直工作
    running = True
    
    while running:
        print(f"当前距离障碍物: {distance} cm")
    
        if distance > 10:
            print(">> 前方畅通,继续前进...")
            # 模拟距离变近
            distance = distance - 10
        elif distance <= 10 and distance > 0:
            print(">> 警告!距离过近,减速...")
            distance = distance - 2
        else:
            print(">> 危险!已接触障碍物,停止并报警!")
            running = False # 停止循环
    
    print("巡逻结束。")
  • 进阶挑战 :

    • 修改代码,让机器人在遇到障碍物时,不是停止,而是"后退5cm,然后左转90度"(用打印文字模拟动作)。
课后总结

今天我们赋予了机器人"思考"的能力。if让它学会了选择,while让它学会了坚持(重复)。没有逻辑的代码只是一堆字符,加上逻辑,它们就变成了智能。

课后思考

如果我写了一个while True:(死循环),但是忘记在循环里写让它停止的条件,或者忘记给它休息的时间,计算机会发生什么?(引导思考:死循环会导致程序卡死,CPU占用率飙升,就像机器人发疯了一样不停转圈)。

相关推荐
yeflx1 分钟前
万向节死锁
python
亿道电子Emdoor3 分钟前
【Perforce】Klocwork-kwgcheck图形化界面无法打开如何解决
git·python·github
aqiu1111112 小时前
【C++算法打怪专栏】8. 字符串转换整数 (atoi)
开发语言·c++·算法
迅猛龙办公室2 小时前
python实现倒序输出数字
开发语言·python
h39747 小时前
DirectShow过滤器开发-视频源过滤器
c++·windows·音视频·directshow
程序猿编码8 小时前
榨干 RTX5090 算力!Qwen3 专用单卡推理引擎,手写C++/CUDA 算子实现 MTP 推测解码
开发语言·c++·大模型推理·qwen3·多模态推理
西飘客9 小时前
vs 怎么根据dll 生成lib文件
c++·qt
程序员老陆10 小时前
深入理解 C++ thread_local:线程私有存储的正确打开方式
开发语言·c++·程序设计
全栈练习生11 小时前
AI Agent 沙箱
python·ai
SEO_juper13 小时前
用 Python 写一个 GEO 可见性检查脚本:你的网站现在能被 AI 引用吗
开发语言·人工智能·爬虫·python·seo·外贸独立站