python课程作业一 人机抢糖

实例

谁能赢得最后的糖块?

第一步:如果现在有10块糖,两人轮流拿,每人只能拿1到2块糖,谁拿到了最后的糖块,谁胜出。请设计一个程序进行人机游戏,保证机器每次都赢。

第二步:继续完善上面的案例,要求1) 可以通过屏幕输入设置糖块的个数;2) 对人为输入的糖块进行合理性判断,如果不是1块或者2块,要求重新输入。根据输入糖块的总数判断机器先拿还是人先拿,总之最终保证经过多轮游戏之后,机器胜出。

思路历程:

程序最终运行结果:保证机器每次都赢

分析程序结束条件:

        当机器人拿到最后一份糖块(1块或2块),即当机器人拿完糖块之后,剩余糖块为0,则机器人获胜

程序模拟:

        

首先以10个糖为模板进行推导:

当机器进行拿糖前,如果剩余糖为1或2,则机器必然会赢得比赛

往前回溯

人拿到1或2个糖之后,剩余1或2个糖,即人拿糖之前,剩余3个糖

继续往前回溯

机器拿到1或2个糖后给人剩余3个糖,那么机器拿糖之前,有5个糖或4个糖

有5个糖时,机器拿走2个,有4个糖时,机器拿走1个,则人必然会输掉比赛

再往前回溯

当机器拿糖前有7个糖

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蜡笔007

等俺发达了赚钱养你[doge]

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值