简单模拟判断机器人应该采取什么动作

发布时间:2026/10/9 14:52:22

简单模拟判断机器人应该采取什么动作 代码逐行解析这段代码实现了一个简单的「指令驱动移动」程序根据用户输入的指令串只含F/B/L/R让一个点从原点(0, 0)出发逐步移动并打印出完整路线、最终坐标和总步数。1.compute_route(commands)—— 核心移动逻辑defcompute_route(commands):按指令串逐步移动返回记录每一步位置的列表。x,y0,0route[(x,y)]forchincommands:ifchF:y1elifchB:y-1elifchL:x-1elifchR:x1else:continueroute.append((x,y))returnroutex, y 0, 0初始化坐标从原点出发。route [(x, y)]用列表记录路线先把起点放进去。for ch in commands逐个字符遍历指令串。四个方向分支FForward→y 1向上走一步BBackward→y - 1向下走一步LLeft→x - 1向左走一步RRight→x 1向右走一步else: continue遇到其他字符直接跳过不产生移动。每执行一条有效指令就把新坐标(x, y)追加进route。最终返回route即每一步的位置列表。2.show_result(commands)—— 打印完整结果defshow_result(commands):计算并打印一条指令串的完整路线与结果。routecompute_route(commands)final_x,final_yroute[-1]stepslen(route)-1route_text → .join(({}, {}).format(px,py)forpx,pyinroute)print(输入指令{}.format(commands))print(路线{}.format(route_text))print(最终坐标({}, {}).format(final_x,final_y))print(总步数{}.format(steps))iffinal_x0andfinal_y0:print(已回到起点)else:print(未回到起点)print(-*40)route compute_route(commands)调用上面的函数拿到完整路线。final_x, final_y route[-1]取列表最后一个元素即最终坐标。steps len(route) - 1总步数 路线点数 - 1去掉起点本身。route_text用 → 把每个坐标点拼接成可读的路线字符串。依次打印输入指令、路线、最终坐标、总步数。判断是否回到原点(0, 0)并输出对应提示。print(- * 40)打印分隔线便于多条指令结果之间区分。3.main()与程序入口defmain():commandsinput(请输入指令串只含 F/B/L/R).strip().upper()show_result(commands)if__name____main__:main()input(...)提示用户输入指令串。.strip()去掉首尾空白字符。.upper()统一转成大写避免用户输入小写f/b/l/r时匹配不上。show_result(commands)调用打印函数输出结果。if __name__ __main__:保证只有直接运行本文件时才执行main()被其他模块导入时不会自动运行。运行示例输入FFLBR输出如下输入FLBR输出如下避障决策程序解析这段代码实现了一个「避障决策」程序根据每组传感器测得的距离和当前电量自动判断小车应该执行哪种动作并统计各类动作的执行次数。1. 数据准备distances[80,35,10,80,20,50]batteries[60,60,60,15,20,20]ACTIONS[正常前进,减速前进,停止避障,停止并充电]distances列表存放 6 组障碍物距离单位 cm。batteries列表存放对应的 6 组电量单位 %。ACTIONS列表定义四种可能的动作名称供后续统计使用。2.decide_action(distance, battery)—— 决策核心defdecide_action(distance,battery):根据一组距离, 电量返回应执行的动作文字。ifbattery20:return停止并充电ifdistance20:return停止避障ifdistance50:return减速前进return正常前进函数接收两个参数distance距离和battery电量。判断顺序从上到下先满足哪个条件就返回哪个动作电量低于 20% → 无论距离多远都返回「停止并充电」电量优先距离小于 20cm → 障碍物太近返回「停止避障」距离小于 50cm → 距离较近返回「减速前进」其余情况 → 距离充足返回「正常前进」。3.main()—— 主流程defmain():stats{name:0fornameinACTIONS}forindexinrange(len(distances)):distancedistances[index]batterybatteries[index]actiondecide_action(distance,battery)stats[action]1print(第{}组距离 {}cm电量 {}%动作{}.format(index1,distance,battery,action))print(-*40)summary.join({} {}次.format(name,stats[name])fornameinACTIONS)print(统计结果{}四项合计{}次。.format(summary,len(distances)))stats {name: 0 for name in ACTIONS}用字典推导式创建统计表把四种动作的计数都初始化为 0。for index in range(len(distances))按索引遍历 6 组数据。distance distances[index]、battery batteries[index]按相同索引取出对应的距离和电量。action decide_action(distance, battery)调用决策函数得到该组应执行的动作。stats[action] 1把对应动作的计数加 1。print(...)打印当前组的编号、距离、电量和决策结果。print(- * 40)打印分隔线。summary用.join(...)把四种动作的统计结果拼接成字符串。最后打印统计结果并用len(distances)验证四项合计次数等于数据组数。4. 程序入口if__name____main__:main()保证只有直接运行本文件时才执行main()被其他模块导入时不会自动运行。运行结果推演逐组分析组距离电量决策18060正常前进23560减速前进31060停止避障48015停止并充电52020减速前进65020正常前进统计结果正常前进 2 次减速前进 2 次停止避障 1 次停止并充电 1 次四项合计 6 次。
延伸阅读

更多相关文章

2026/10/9 14:52:22

Spring Boot秒杀系统实战:Redis+RabbitMQ高并发源码解析

简介:这是一套基于SpringBoot的电商秒杀系统完整项目源码,面向计算机相关专业的在校学生、教师及企业开发者,尤其适合作为毕业设计、课程设计或项目立项演示的参考方案。项目采用MySQL、SpringBoot、Redis与RabbitMQ技术栈,重点解…

2026/10/9 14:47:22

B站视频AI分拣工具:本地化处理字幕与弹幕的Obsidian知识工作流

1. 这不是收藏夹,是待处理的“视频原料库”你点开B站收藏夹那一刻,心里想的真是“以后慢慢看”吗?我翻过自己三年来的收藏记录——237个视频,平均每个收藏夹里塞着48条,其中62%的视频播放量不足50次,31%甚至…

2026/10/9 15:37:38

看懂中药材口碑推荐:从产地、批次到复购的鉴别方法

说到中药材原料,市面上的“口碑推荐榜单”这两年真是多到看不过来。有个很反直觉的现象:越是用身体在长期验证的东西,越没人愿意公开写长文推荐;反过来,那些把药材功效吹得天花乱坠的榜单,往往连产地、采季…

2026/10/9 15:37:38

mysql.data.dll版本混乱与替换指南:从报错到选型一次讲清

简介:MySQL.Data.dll 多版本合集,面向使用 .NET 连接 MySQL 的初、中级开发者,涵盖 Web 应用、桌面工具等常见场景,帮助解决不同服务器版本与 .NET Framework 之间的兼容性难题。压缩包共 210 个文件,其中 138 个 dll …

2026/10/9 15:37:38

wxappUnpacker实战:微信小程序反编译与源码恢复指南

简介:针对微信小程序逆向工程的wxappUnpacker工具包,面向小程序开发者、安全研究人员及前端学习者。它可将小程序二进制包还原为可读源码,同时支持主包与分包解析,便于理解业务逻辑、优化代码和排查隐患;整个包体共780…

2026/10/8 10:03:18

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/8 10:03:20

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 0:04:27

毕业论文初稿完成后首次进行AIGC疑似度自查的摸底与分流策略

毕业论文初稿完成后首次进行AIGC疑似度自查的摸底与分流策略当数万字的学位论文初稿经历开题、实验、问卷与多轮文献梳理最终成形时,绝大多数研究生都会面临一道全新的形式审查关卡:AIGC 疑似度排查。在高校毕业审核流程中,盲审前的文本检测通…

2026/10/9 0:04:27

食堂节能改造源头工厂,商用厨房设备焕新方案广受好评

商用厨房作为餐饮经营、单位供餐的核心后勤阵地,其设备配置、动线规划与运维体系直接决定后厨作业效率、运营成本与合规性。从基础的灶具、制冷存储设备,到油烟净化、水处理等配套系统,每一个环节的合理性都与食品安全、能耗管控、消防安全挂…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑