Python经典实例:约瑟夫生者死者小游戏

本文介绍了一个Python编程挑战:约瑟夫生者死者小游戏。游戏规则是30人在船上,需要15人下船。人们按编号排队,数到9的人下船,循环进行直至只剩15人。通过算法思考和代码实现,展示了如何解决这个问题,使用字典记录下船人员,避免已下船人员再次参与计数。
摘要由CSDN通过智能技术生成

目录

游戏规则

算法思考

代码实现


游戏规则:

30 个人在一条船上,超载,需要 15 人下船。

于是人们排成一队,排队的位置即为他们的编号。

报数,从 1 开始,数到 9 的人下船。

如此循环,直到船上仅剩 15 人为止

算法思考:

毫无疑问,每数到第九个人就下船,并且重新开始计数,我们可以简单的想到以下代码:

while i:
    check += 1
    if check == 9:
        people[i] = 0
        check = 0
        print("{}号下船了".format(i))
    else:
        i+=1
        continue

但是在我们的代码中,并不能体现当第一轮每九个人(也就是3个人)下船后,再一次计数,此时people[ ]中之前下船的人仍然占据着位置,并没有真正的清除。则需要continue跳过:

 if people[i] == 0:
            i+=1
            continue
        else:
            check+=1
            if check == 9:
     
  • 10
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一个兴趣使然的程序猿罢了

有钱的捧个人场,没钱的想想办法

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

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

打赏作者

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

抵扣说明:

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

余额充值