python_case_2

本文介绍了使用Python解决两个趣味问题:约瑟夫生者死者问题,探讨了如何通过报数确定下船人员;五人分鱼问题,分析了如何分配确保每个人都能公平得到鱼。此外,还涵盖了Python中常见的数据操作,如秒表、数组操作、字符串处理和字典操作等实用技巧。
摘要由CSDN通过智能技术生成
  • 约瑟夫生者死者小游戏。30人在一条船上,现在由于超载需要15人下船。给30人编号,从1开始报数,数到9的人下船,如此反复,直到15人全部下船。问有哪些编号的人下船了。
people = {}    # 集合
i=1    # 每人的编号
j=0    # 计数下船的人
check=0    # 当前1-9人的计数

for i in range(1,31):
    people[i] = 1    

while i<=31:
    if i == 31:
        i = 1
    elif j ==15:
        break
    else:
        if people[i] == 0:    # 过滤掉前面已经下船的人
            i += 1
        else:
            check += 1
            if check == 9:
                print("{}号下船了".format(i))
                j += 1
                people[i] == 0    # 标记此人已下船
                check = 0    # 重新计数1-9
            else:
                i += 1
  •  五人分鱼。第一个人把鱼扔掉一条并且五等分,拿走自己的部分;第二个人把第一个人剩下的鱼扔掉一条并且五等分,拿走自己的部分...五个人都同样的操作,问至少有多少条鱼。
def main():
    fish = 1    # 当前fish的数量
    while True:
        total = fish    # for loop中会改变fish的数量,需要total变量记录同一loop中的fish的数量
        enough = True
        for i in range(5):
            if((total-1)%5 == 0):
                total = (total-1)//5*4  # 当前剩余fish的数量
            else:
                enough = False
                break        # 善用break以避免不必要的loop
        if enough:
            print("至少捕到了{}条鱼".format(fish))
            break   # 第一次满足条件
        fish += 1

if __name__ == "__main__":  # 只有当前文件单独执行时,执行此函数。作为模块被其他文件引用时,不执行。
    main()
  • 秒表 
import time

print('按下回车开始计时,按下 Ctrl + C 停止计时。')
input("")

starttime=time.time()   # 当前时间戳
try:
    while True:
        print("计时",round(time.time()-s
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值