社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python案例精解:5人分鱼与船夫渡河

Python初级入门到精通 • 1 月前 • 168 次点击  

一天夜里,西门庆、潘金莲、武大郎、王婆、武松合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。

日上三竿,西门庆第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。

潘金莲第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉拿走自己的一份。 。

武大郎、王婆、武松依次醒来,也按同样的方法拿鱼。

问他们至少捕了多少条鱼?

实例

def main():

    fish = 1

    while True:

        total, enough = fish, True

        for _ in range(5):

            if (total - 1) % 5 == 0:

                total = (total - 1)  //  5 * 4

            else:

                enough = False

                break

        if enough:

            print(f'总共有{fish}条鱼')

            break

        fish += 1

if __name__ == '__main__':

    main()

运行结果:

总共有3121条鱼


武松分鱼吃了闷亏,回到家中越想越气,把那拳头往桌上狠狠一砸,道:“这口恶气怎生咽得下!
思忖再三,武松决定去找梁山兄弟一起商讨个对策。
次日,武松往梁山走去,行至江边,船刚好靠岸,人们蜂拥而上,船东清点人数,发现原本一趟装载15人的船,已登上30人,需要多出来15人下船。
为公平起见,船东让人们排成一队,排队的位置即为他们的编号,报数,从1开始,数到9的人下船,如此循环,直到船上仅剩15人为止。
问,武松应该站到几?不会被赶下船呢?
回答这个问题之前,我们应该先找出,都有哪些编号的人下船了呢?
实例
people={}
for x in range(1,31):
    people[x]=1
# print(people)
check=0
i=1
j=0
while i<=31:
    if i == 31:
        i=1
    elif j == 15:
        break
    else:
        if people[i] == 0:
            i+=1
            continue
        else:
            check+=1
            if check == 9:
                people[i]=0
                check = 0
                print("{}号下船了".format(i))
                j+=1
            else:
                i+=1
                continue
执行以上实例,输出结果为:
9号下船了
18号下船了 
27号下船了 
6号下船了 
16号下船了 
26号下船了
 7号下船了 
19号下船了 
30号下船了
 12号下船了 
24号下船了 
8号下船了 
22号下船了 
5号下船了 
23号下船了
所以武松应该站在队伍1~4的位置,才不会被船东赶下船。



关注公众号,每天领红包


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/201095