优达学城《无人驾驶入门》学习笔记——把python翻译成C++

本文介绍了如何将Python代码翻译为C++,以理解两种语言在创建变量、函数和类上的差异。内容包括将Python代码拆分为3个C++文件,将Python类转换为C++类,并提供了相关学习资源。
摘要由CSDN通过智能技术生成


如果你学习的第一门语言是python,可能和我当初一样,并没有什么特别的感受。但是,后面又学习了C++的话就会发现,python使用起来太方便了!C++的各种条条框框太多了!

作为动态语言,python不需要预先设定数据的类型,非常灵活,而代价就是运行速度慢。与之相反,C++是静态语言,需要声明变量、函数或者类的类型,然后才能定义。因为C++的变量、函数和类等需要声明和定义两个步骤,为了使代码看上去更有条理,可以把它们分成两个部分(.cpp文件)。另外,C++可能需要导入一些库,这些语句可以存放在头文件中(.h文件)。

至于其他函数和语句,python和C++很接近,但又略有不同。比较好的学习方法是相互翻译。比如把一段python代码翻译成C++代码。

本文分成3个部分,第一部分是把一段python代码翻译成C++,并且把C++代码分别存放在3个文件中,目的是比较两种语言在创建变量、函数方面的异同;第二部分则是把一个python类翻译成C++,目的是比较两种语言在创建类方面的异同;第三部分会推荐一些C++的学习资料,供你学习参考。

1 把python代码翻译成C++,并且保存在3个文件中

先来看一段python代码。这段代码表达的意思是,一辆无人车沿着一维道路行走,道路分成5个格子,格子涂成绿色或者红色。无人车在某个格子上停下,检测格子的颜色。无人车移动的距离用move表示。无人车对格子颜色的检测,以及移动的距离都存在误差。正确识别颜色的概率是pHit,错误识别的概率是pMiss;移动正确的距离的概率是pExact,多移动一格的概率是pOvershoot,少移动一格的概率是pUndershoot.

代码中有sense和move两个函数,sense用来识别无人车当前所处格子的颜色,并且计算位于每个格子的概率;move用来计算无人车移动后,位于每个格子的概率。

# 无人车停在每个格子里面的初始概率
p = [0.2, 0.2, 0.2, 0.2, 0.2]
# 创建一维道路
world = ['green', 'red', 'red', 'green', 'green']
# 无人车测量到的颜色
measurements = ['red', 'green']
# 无人车移动的距离
motions = [1,1]
# 正确识别颜色的概率
pHit = 0.6
# 错误识别颜色的概率
pMiss = 0.2
# 移动正确距离的概率
pExact = 0.8
# 多移动一格的概率
pOvershoot = 0.1
# 少移动一格的概率
pUndershoot = 0.1

# 识别当前格子的颜色,计算无人车位于每个格子的概率
def sense(p, Z):
    q=[]
    for i in range(len(p)):
        hit = (Z == world[i])
        q.append(p[i] * (hit * pHit + (1-hit) * pMiss))
    # 归一化
    s = sum(q)
    for i in range(len(q)):
        q[i] = q[i] / s
    return q

# 移动后无人车位于每个格子的概率
def move(p, U):
    q = []
    for i in range(len(p)):
        s = pExact * p[(i-U) % len(p)]
        s = s + pOvershoot * p[(i-U-1) % len(p)]
        s = s + pUndershoot * p[(i-U+1) % len(p)]
        q.append(s)
    return q

# 无人车识别、移动两次后,位于每个格子的概率
for k in
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值