Python经典题(菜鸟编程)

【1】五人分鱼

A、B、C、D、E 五人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。日上三杆,A 第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。B 第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉拿走自己的一份。
C、D、E依次醒来,也按同样的方法拿鱼。
问他们至少捕了多少条鱼?

"""五人分鱼"""
"""A、B、C、D、E 五人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。

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

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

C、D、E依次醒来,也按同样的方法拿鱼。

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

def main( ):
    fish = 1
    #初始化fish,从1开始计数
    while True:
        total, enough = fish, True
        for _ in range(5):
            #存在一个数,循环5次能够整除
            if (total - 1) % 5 == 0:
                #第一个人拿鱼时,总数中扔掉一条,向下取整五个人均分,他拿走了自己的,
                #剩余总数剩余4人的份;第二个人也是同样的方法,一次类推,
                #五个人都这样操作,所以共分了五次鱼
                total = (total - 1) // 5 * 4
            #若存在一个人不够分鱼,则跳出循环,fish自增1,继续循环
            else:
                enough = False
                break
        if enough:
            #执行5次循环之后,enough = True,打印至少鱼的总数,跳出while循环
            print('至少捕获鱼的数量{0}'.format(fish))
            break
        #fish自增1
        fish +=1

if __name__ ==  '__main__':
    main( )
#可以简单的理解为找一个数字,能够完成total = (total - 1) // 5 * 4,for循环的五次计算,即可计算出鱼的最少数量.

知识点:1、运算符;2、循环、判断

数组翻转指定个数的元素

Python经典题(菜鸟编程)_第1张图片

def leftRotate(arr, d, n):
    for i in range(d):
        leftRotatebyOne(arr, n)


def leftRotatebyOne(arr, n):
    temp = arr[0]
    for i in range(n - 1):
        arr[i] = arr[i + 1]
    arr[n - 1] = temp


def printArray(arr, size):
    for i in range(size):
        print("%d" % arr[i], end=" ")


arr = [1, 2, 3, 4, 5, 6, 7,8]
leftRotate(arr, 3, 8)
printArray(arr, 8)

你可能感兴趣的:(Python)