Python 每日一题:锻炼Python语法的运用,思维逻辑的锻炼,算法能力的培养。


题目:

   啤酒2元一瓶,2个空瓶可以换一瓶啤酒,4个瓶盖可以换一瓶啤酒,现在给10元钱,在此规则下:总共能喝多少瓶啤酒?

分析:

  定义3个变量beers、caps、bottles 分别表示啤酒数、瓶盖数、空瓶数,循环进行判断:

(1)只要 beers > 0 表示还未结束,喝完啤酒可得到:beers 个瓶盖和空瓶,加到原来的 caps、bottles变量中;

(2)如果 bottles >= 2 则可以换取 bottles // 2 瓶啤酒,余下 bottles % 2 个酒瓶;

(3)如果 caps >= 4 则可以换取 caps // 4 瓶啤酒,余下 caps % 4 个瓶盖;

(4)当啤酒喝完,余下的瓶盖和酒瓶换不出更多的啤酒,程序结束。


程序实现:

def sum_beers():
    money = 10  # 钱数
    beers = money // 2  # 啤酒数
    caps = 0  # 瓶盖数
    bottles = 0  # 空瓶数
    count = 0  # 喝啤酒总数
    while beers > 0:
        caps += beers
        bottles += beers
        count += beers

        print(f"本次喝了 {beers} 瓶啤酒,共计喝了 {count} 瓶啤酒")
        beers = 0
        print(f"本次剩余:{beers} 瓶啤酒,{caps} 个瓶盖,{bottles}个空瓶")

        if caps >= 4:     # 4个瓶盖可以换一瓶啤酒
            print(f"{caps - caps % 4} 个瓶盖换取 {caps // 4} 瓶啤酒")
            beers = beers + caps // 4
            caps = caps % 4

        if bottles >= 2:     # 2个空瓶可以换一瓶啤酒
            print(f"{bottles - bottles % 2} 个空瓶换取 {bottles // 2} 瓶啤酒")
            beers = beers + bottles // 2
            bottles = bottles % 2

        print(f"换取 {beers} 瓶啤酒,剩余 {caps} 个瓶盖,{bottles} 个空瓶")
        print('-' * 50)

    print(f"总共喝了{count} 瓶啤酒,剩余 {caps} 个瓶盖,{bottles}个空瓶")

sum_beers()

实现结果:

本次喝了 5 瓶啤酒,共计喝了 5 瓶啤酒
本次剩余:0 瓶啤酒,5 个瓶盖,5个空瓶
4 个瓶盖换取 1 瓶啤酒
4 个空瓶换取 2 瓶啤酒
换取 3 瓶啤酒,剩余 1 个瓶盖,1 个空瓶
--------------------------------------------------
本次喝了 3 瓶啤酒,共计喝了 8 瓶啤酒
本次剩余:0 瓶啤酒,4 个瓶盖,4个空瓶
4 个瓶盖换取 1 瓶啤酒
4 个空瓶换取 2 瓶啤酒
换取 3 瓶啤酒,剩余 0 个瓶盖,0 个空瓶
--------------------------------------------------
本次喝了 3 瓶啤酒,共计喝了 11 瓶啤酒
本次剩余:0 瓶啤酒,3 个瓶盖,3个空瓶
2 个空瓶换取 1 瓶啤酒
换取 1 瓶啤酒,剩余 3 个瓶盖,1 个空瓶
--------------------------------------------------
本次喝了 1 瓶啤酒,共计喝了 12 瓶啤酒
本次剩余:0 瓶啤酒,4 个瓶盖,2个空瓶
4 个瓶盖换取 1 瓶啤酒
2 个空瓶换取 1 瓶啤酒
换取 2 瓶啤酒,剩余 0 个瓶盖,0 个空瓶
--------------------------------------------------
本次喝了 2 瓶啤酒,共计喝了 14 瓶啤酒
本次剩余:0 瓶啤酒,2 个瓶盖,2个空瓶
2 个空瓶换取 1 瓶啤酒
换取 1 瓶啤酒,剩余 2 个瓶盖,0 个空瓶
--------------------------------------------------
本次喝了 1 瓶啤酒,共计喝了 15 瓶啤酒
本次剩余:0 瓶啤酒,3 个瓶盖,1个空瓶
换取 0 瓶啤酒,剩余 3 个瓶盖,1 个空瓶
--------------------------------------------------
总共喝了15 瓶啤酒,剩余 3 个瓶盖,1个空瓶

结语】以上整个程序的实现逻辑,还存在很多不全面的地方,欢迎各位大佬指点;如果觉得笔者不易,请给予点赞,给予我记录更多文章的动力!! 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐