移动轨迹代码
一.代码下面这段 Python 代码实现了一个简单的「路线追踪」程序用户输入一串由F/B/L/R组成的字母程序模拟从原点出发的移动轨迹并输出每一步的坐标、最终位置和总步数。defprocess_route(s):x,y0,0positions[(x,y)]steps0forchins:ifchF:y1elifchB:y-1elifchL:x-1elifchR:x1else:print(f无效字符:{ch}跳过)continuesteps1positions.append((x,y))route_str-.join(f({px},{py})forpx,pyinpositions)print(f路线{route_str})print(f最终坐标 ({x},{y}))print(f总步数{steps})ifx0andy0:print(已回到起点)else:print(未回到起点)if__name____main__:sinput(请输入一串字母只含F/B/L/R).strip().upper()process_route(s)这个是运行结果。1. 函数定义与初始状态defprocess_route(s):定义函数process_route参数s是用户输入的字符串由F/B/L/R组成。x,y0,0初始化横坐标x和纵坐标y都为0即从原点(0, 0)出发。positions[(x,y)]创建列表positions用来记录每一步的位置。初始时先把起点(0, 0)放进去。steps0初始化计数器steps为0用来统计有效移动的总步数。2. 遍历输入字符forchins:用for循环逐个遍历字符串s中的每个字符ch代表当前字符。ifchF:y1如果当前字符是FForward前进则纵坐标y加1表示向上移动一步。elifchB:y-1如果当前字符是BBackward后退则纵坐标y减1表示向下移动一步。elifchL:x-1如果当前字符是LLeft向左则横坐标x减1表示向左移动一步。elifchR:x1如果当前字符是RRight向右则横坐标x加1表示向右移动一步。else:print(f无效字符:{ch}跳过)continue如果字符不是F/B/L/R中的任何一个就打印提示信息并用continue跳过本次循环不把它当作有效移动。steps1只有遇到有效字符F/B/L/R时步数steps才加1。positions.append((x,y))把移动后的新坐标(x, y)追加到positions列表中记录下这一步的位置。3. 输出结果route_str-.join(f({px},{py})forpx,pyinpositions)用列表推导式把positions中的每个坐标格式化成(px,py)字符串再用-连接起来生成完整的路线字符串。print(f路线{route_str})打印整条路线例如(0,0)-(0,1)-(1,1)。print(f最终坐标 ({x},{y}))打印最终停留的坐标。print(f总步数{steps})打印有效移动的总步数。ifx0andy0:print(已回到起点)else:print(未回到起点)判断最终坐标是否为(0, 0)如果是说明回到了起点否则说明没有回到起点。4. 程序入口if__name____main__:这是 Python 的入口判断只有当该脚本被直接运行时才执行下面的代码如果被当作模块导入则不执行。sinput(请输入一串字母只含F/B/L/R).strip().upper()用input()提示用户输入字符串.strip()去掉首尾空白字符.upper()把所有字母转为大写保证与判断条件一致。process_route(s)调用process_route函数传入用户输入的字符串开始执行路线追踪。5. 运行示例假设输入FFR起点(0,0)F→(0,1)F→(0,2)R→(1,2)输出结果为路线 (0,0)-(0,1)-(0,2)-(1,2) 最终坐标 (1,2) 总步数3 未回到起点二、代码下面这段 Python 代码实现了一个「智能小车决策」程序根据小车与障碍物的距离以及当前电量决定执行哪种动作正常前进、减速前进、停止避障、停止并充电并统计各类动作出现的次数。defdecide_action(distance,battery):ifbattery20:return停止并充电else:ifdistance20:return停止避障elifdistance50:return减速前进else:return正常前进defmain():distances[80,35,10,80,20,50]batteries[60,60,60,15,20,20]actions[]fori,(d,b)inenumerate(zip(distances,batteries),start1):actiondecide_action(d,b)actions.append(action)print(f组号{i}距离{d}cm电量{b}%动作{action})fromcollectionsimportCounter countCounter(actions)print(\n统计结果)print(f正常前进{count[正常前进]}次减速前进{count[减速前进]}次停止避障{count[停止避障]}次停止并充电{count[停止并充电]}次。)print(f四项合计为{sum(count.values())}次。)if__name____main__:main()这是代码运行的结果。1. 决策函数defdecide_action(distance,battery):定义决策函数decide_action接收两个参数distance表示小车与障碍物的距离单位 cmbattery表示当前电量单位 %。ifbattery20:return停止并充电如果电量低于20%说明电量不足直接返回「停止并充电」。这是最高优先级的判断无论距离多远电量不足时都先充电。else:如果电量不低于20%则进入距离判断分支。ifdistance20:return停止避障在电量充足的前提下如果距离小于20cm说明障碍物已经很近返回「停止避障」。elifdistance50:return减速前进如果距离在20cm到50cm之间即20 distance 50说明障碍物有一定距离但不算远返回「减速前进」。else:return正常前进如果距离大于等于50cm说明前方畅通返回「正常前进」。2. 主函数与数据准备defmain():定义主函数main程序的核心逻辑都放在这里。distances[80,35,10,80,20,50]创建列表distances存放 6 组测试数据中每组小车与障碍物的距离。batteries[60,60,60,15,20,20]创建列表batteries存放 6 组测试数据中每组小车的电量。actions[]创建空列表actions用来记录每组数据对应的决策结果。3. 遍历数据并决策fori,(d,b)inenumerate(zip(distances,batteries),start1):用zip把distances和batteries按位置一一配对再用enumerate从1开始编号。循环变量i是组号d是距离b是电量。actiondecide_action(d,b)调用decide_action函数把当前组的距离d和电量b传进去得到决策结果并赋值给action。actions.append(action)把本次的决策结果action追加到actions列表中方便后续统计。print(f组号{i}距离{d}cm电量{b}%动作{action})用 f-string 格式化输出当前组的组号、距离、电量和决策动作。4. 统计结果fromcollectionsimportCounter从标准库collections中导入Counter它是一个计数器可以方便地统计列表中每个元素出现的次数。countCounter(actions)用Counter对actions列表进行计数得到每种动作出现的次数结果保存在count中。print(\n统计结果)打印一个空行和「统计结果」标题让输出更清晰。print(f正常前进{count[正常前进]}次减速前进{count[减速前进]}次停止避障{count[停止避障]}次停止并充电{count[停止并充电]}次。)分别从count中取出四种动作的次数并打印。注意如果某种动作一次都没出现Counter会返回0不会报错。print(f四项合计为{sum(count.values())}次。)用sum(count.values())把四种动作的次数加起来得到总次数并打印。5. 程序入口if__name____main__:main()这是 Python 的入口判断只有当该脚本被直接运行时才调用main()如果被当作模块导入则不执行。6. 运行结果根据给定的 6 组数据程序输出如下组号1距离80cm电量60%动作正常前进 组号2距离35cm电量60%动作减速前进 组号3距离10cm电量60%动作停止避障 组号4距离80cm电量15%动作停止并充电 组号5距离20cm电量20%动作正常前进 组号6距离50cm电量20%动作正常前进 统计结果 正常前进 3 次减速前进 1 次停止避障 1 次停止并充电 1 次。 四项合计为 6 次。

相关新闻

NLP 基础到高级 11:机器翻译

NLP 基础到高级 11:机器翻译

机器翻译 翻译是为 NLP 研究买单三十年的任务,现在仍在持续买单。 类型: 构建 语言: Python 前置条件: Phase 5 10(注意力机制),Phase 5 04(GloVe、FastText、子词) 预计用时: ~75 分钟 问题 模型读取一种语言的句子并生成另一种语言的句子。长度各异。词序各异。…

2026/11/5 5:56:47 阅读更多 →
learnxinyminutes-docs 仓库西班牙语版 Python 速成教程:从基础语法到高级特性的完整实战指南

learnxinyminutes-docs 仓库西班牙语版 Python 速成教程:从基础语法到高级特性的完整实战指南

文档教程 【免费下载链接】learnxinyminutes-docs Code documentation written as code! How novel and totally my idea! 项目地址: https://gitcode.com/gh_mirrors/le/learnxinyminutes-docs 点击查看 免费下载 Python 由 Guido van Rossum 于 90 年代初创造&am…

2026/11/2 4:09:39 阅读更多 →
python uv 基本使用教程

python uv 基本使用教程

前言 先澄清一个身份问题:uv 不是 Python 标准库的一部分。它由 Astral 公司开发,用 Rust 写成,官方对自己的介绍是「一个极快的 Python 包管理器和项目管理器」。要使用它,需要单独安装它本身,标准库里没有 uv 这个模…

2026/11/2 23:22:44 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/12 5:00:00 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/12 5:13:20 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/12 5:13:20 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/11 17:16:37 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/11 17:16:37 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/12 5:13:20 阅读更多 →

日新闻

周新闻

月新闻