如何实现猴子摘香蕉问题,只需要几点即可
1.猴子与箱子的位置关系
2.箱子与香蕉的位置关系
3.猴子有无摘到香蕉
猴子摘到香蕉的前提条件
1.猴子与箱子在一起
2.箱子与香蕉在一起
3.猴子在箱子上面
4.猴子没有摘到香蕉
猴子可能存在的几种位置状态
1.箱子和猴子不在一起
2.猴子跟箱子在一起且不跟香蕉在一起
3.猴子不在箱子上并且猴子跟箱子在一起
4.猴子在箱子上并且箱子跟香蕉在一起以及猴子没有摘取香蕉
5.猴子在箱子上但箱子不跟香蕉在一起
6.猴子取到香蕉
根据上述开始实现代码
首先定义猴子的动作
1.猴子走向箱子
# 猴子走向箱子def monkey_go_box(monkey,box):global i #步数i+=1print("step "+str(i)+": "+"Monkey从"+monkey+"走向"+box)
2.猴子推箱子
# 猴子推箱子 def monkey_push_box(box,banana):global ii+=1print("step "+str(i)+":"+"Monkey将箱子从"+box+"推向"+banana)
3.猴子爬上箱子
# 猴子爬上箱子 def monkey_clim_box():global ii+=1print("step "+str(i)+": "+"Monkey爬上箱子")
4.猴子爬下箱子
# 猴子爬下箱子def monkey_drop():global ii+=1print("step "+str(i)+": "+"Monkey爬下箱子")
5.猴子摘取香蕉
# 猴子摘取香蕉def monkey_grasp():global ii+=1print("step "+str(i)+": "+"Monkey摘到香蕉")
猴子根据不同位置状态做出相应的动作
1.箱子和猴子不在一起才能走向箱子
if monkey!=box:monkey_go_box(monkey,box)monkey=box
2.猴子跟箱子在一起且不跟香蕉在一起以及猴子不在箱子上才能推
if box!=banana and monkey==box and monkey_y!="1":monkey_push_box(box,banana)monkey=box=banana
3.猴子不在箱子上并且猴子跟箱子在一起才能爬
if monkey_y!="1" and monkey==box:monkey_clim_box()monkey_y="1"
4.猴子在箱子上并且箱子跟香蕉在一起以及猴子没有摘取香蕉才能摘取香蕉
if monkey_y=="1" and box==banana and monkey_re!="1":monkey_grasp()monkey_re="1"
5.猴子在箱子上但箱子不跟香蕉在一起才能爬下箱子
if monkey_y=="1" and box!=banana:monkey_drop()monkey_y="0"
完整代码
# 猴子走向箱子def monkey_go_box(monkey,box):global i #步数i+=1print("step "+str(i)+": "+"Monkey从"+monkey+"走向"+box)# 猴子推箱子 def monkey_push_box(box,banana):global ii+=1print("step "+str(i)+":"+"Monkey将箱子从"+box+"推向"+banana)# 猴子爬上箱子 def monkey_clim_box():global ii+=1print("step "+str(i)+": "+"Monkey爬上箱子")# 猴子摘取香蕉def monkey_grasp():global ii+=1print("step "+str(i)+": "+"Monkey摘到香蕉")# 猴子爬下箱子def monkey_drop():global ii+=1print("step "+str(i)+": "+"Monkey爬下箱子")if __name__ == "__main__":i=0print("请输入monkey位置,猴子是否在箱子上(1:在,0:不在)上以及猴子是否摘取香蕉(1:是,0:否),香蕉的位置,箱子的位置:")monkey,monkey_y,monkey_re,banana,box=input().split(",")while True:# 箱子和猴子不在一起才能走向箱子if monkey!=box:monkey_go_box(monkey,box)monkey=boxcontinue# 猴子跟箱子在一起且不跟香蕉在一起以及猴子不在箱子上才能推if box!=banana and monkey==box and monkey_y!="1":monkey_push_box(box,banana)monkey=box=bananacontinue# 猴子不在箱子上并且猴子跟箱子在一起才能爬if monkey_y!="1" and monkey==box:monkey_clim_box()monkey_y="1"continue# 猴子在箱子上并且箱子跟香蕉在一起以及猴子没有摘取香蕉才能摘取香蕉if monkey_y=="1" and box==banana and monkey_re!="1":monkey_grasp()monkey_re="1"continue# 猴子在箱子上但箱子不跟香蕉在一起才能爬下箱子if monkey_y=="1" and box!=banana:monkey_drop()monkey_y="0"continue# 猴子取到香蕉结束if monkey_re =="1":break
运行图效果
如果觉得《使用python实现猴子摘香蕉问题》对你有帮助,请点赞、收藏,并留下你的观点哦!