Python2.7:保存执行的程序步骤并逐个读取
我遇到以下问题。我想将一个功能集成到我的Rasberry Pi控制的RC车中,这将使这款RC车回到它的起点。要做到这一点,它必须记录用户向汽车发出的每一个命令,并在最后再次执行这些命令,除非是反向执行,以便返回到起点 我对Python2.7:保存执行的程序步骤并逐个读取,python,python-2.7,raspberry-pi,Python,Python 2.7,Raspberry Pi,我遇到以下问题。我想将一个功能集成到我的Rasberry Pi控制的RC车中,这将使这款RC车回到它的起点。要做到这一点,它必须记录用户向汽车发出的每一个命令,并在最后再次执行这些命令,除非是反向执行,以便返回到起点 我对字符串和数组做了很多研究,但它们似乎都不是获得所需行为的好方法 所以我的问题,;有什么方法可以做到这一点吗?您正在寻找的是一个堆栈数据结构。它遵循“先进先出”的规则。在Python中,通过使用append和pop可以很容易地将列表(就像数组)用作堆栈。下面是一段代码片段,让您了
字符串
和数组
做了很多研究,但它们似乎都不是获得所需行为的好方法
所以我的问题,;有什么方法可以做到这一点吗?您正在寻找的是一个
堆栈
数据结构。它遵循“先进先出”的规则。在Python中,通过使用append
和pop
可以很容易地将列表(就像数组)用作堆栈。下面是一段代码片段,让您了解它的工作原理:
directions = []
directions.append('forward')
#execute command here
directions.append('right')
#execute command here then turn car 180 degrees
#at this point directions = ['forward', 'right'] now you need to just pop the commands to execute
issueCommand(directions.pop()) #sends 'right'
issueCommand(directions.pop()) #sends 'forward'
“我只是对解决这个问题有错误的想法吗?”-想象一下,它被告知在一个广场上开车,结果又回到了起点。现在你告诉它回到起点。它应该做什么?现在我只想添加这个功能,而不考虑如何使用它。这将是下一步。当它到达列表的开头时,它会做什么?它是否发送“nil”或类似的信息?如果您尝试在空列表上使用
.pop
,您将得到索引器
异常。最好在弹出前使用len(directions)
,以确保它不是空的。我尝试过在if子句中使用它,但它总是只使用最后一个字符串,然后它会说列表是空的…:/