zoukankan      html  css  js  c++  java
  • python练习题

    python练习题

    1.数字组合

    【题目】:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
    分析:
    四个数字组成三位数,把三位数分为个、十、百位,将1、2、3、4填入其中,去掉不满足条件的剩下就是结果。
    for i in range(1, 5):
        for j in range(1, 5):
            for q in range(1, 5):
                if i != j and i != q and j != q:
                    print(i, j, q)
    
    #总结:采用剔除思想

    2.企业年终奖问题

    【题目】:某企业发放的奖金根据利润提成,利润低于或等于10万元时,奖金可提10%;利润高于10万元,
    低于20万元,高于10万元部分按7.5%提成;20万元到40万元,高于20万部分,按5%提成;40万到60万,
    高于40万部分按3%提成;60万到100万,高于60万部分按1.5%提成;高于100万部分按1%提成,从键盘输入当月利润I,求应发奖金总数?
    分析:
    根据题目,我们利用数轴来分界,定位。注意定义时需要把奖金定义为整型。
    def bonus(i):
        b1 = 100000 * 0.01
        b2 = 100000 * 0.075
        b3 = 200000 * 0.05
        b4 = 200000 * 0.03
        b5 = 400000 * 0.015
    
        # 利润小于等于10万时
    
        if i <= 100000:
            bo = i * 0.01
    
        # 利润大于十万小于20万时
    
        elif i <= 200000:
            bo = b1 + (i - 100000) * 0.075
    
        # 利润大于20万小于40万时
    
        elif i <= 400000:
            bo = b1 + b2 + (i - 200000) * 0.05
        # 利润大于40万,小于60万时
        elif i <= 600000:
            bo = b1 + b2 + b3 + (i - 400000) * 0.03
        # 利润大于60万小于100万时
        elif i <= 1000000:
            bo = b1 + b2 + b3 + b4 + (i - 600000) * 0.015
        # 利润大于100万时
        elif i > 1000000:
            bo = b1 + b2 + b3 + b4 + b5 + (i - 1000000) * 0.01
        return bo
    
    
    mybo = bonus(200000)
    print(mybo)
    View Code

    3.判断日期

    【题目】:输入某年某月某日,判断这一天是这一年的第几天?
    分析:
    以8月25日为例,应该先把前七个月的的天数加起来,然后再加上25天即本年的第几天,特殊情况,闰年输入月份大于3时需要考虑多加一天.
    # -*-coding:utf-8-*-
    '''判断日期
    【题目】:输入某年某月某日,判断这一天是这一年的第几天?
    分析:
    以8月25日为例,应该先把前七个月的的天数加起来,然后再加上25天即本年的第几天,特殊情况,闰年输入月份大于3时需要考虑多加一天.'''
    
    year = int(input("请输入年份:"))
    month = int(input("请输入月份:"))
    day = int(input("输入天:"))
    
    days = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365]
    # 判断是否是闰年
    if year % 4 == 0 and year % 100 != 0:
        if month > 2:
            total_days = days[month-1] + 1 + day
        else:
            total_days = days[month-1] + day
    else:
        total_days = days[month-1] +day
    
    print(f"你输入的日期是:{year}年{month}月{day}日,是一年的第{total_days}天")
    View Code

    4.  9*9乘法口诀

    # -*-coding:utf-8-*-
    #9*9乘法口诀
    ''''【题目】:打印9*9口诀?
    分析:
    利用for嵌套循环来打印'''
    
    for i in range(1, 10):
        for j in range(1, i+1):
            result = i * j
    
            print('%d*%d=%d' % (i, j, result), end='	')
        print()
    View Code


    5.
    斐波那契序列

    # -*-coding:utf-8-*-
    # 斐波那契序列
    '''【题目】:斐波那契序列是数字序列,其中每个连续数字是前两个数字的和。经典的斐波那 契序列开始于 1,1,2,3,5,8,13,……
    分析:
    利用for循环查找序列'''
    
    
    # 方法一、循环
    def feibo(n):
        n1 = 1
        n2 = 1
        if n - 2 < 0:
            return 1
    
        while n - 2 >= 0:
            n3 = n2 + n1
            n1 = n2
            n2 = n3
            n -= 1
        return n3
    
    n = int(input("请输入第几位斐波那契数列:"))
    for i in range(1, n + 1):
        myfeibo = feibo(i)
        print(myfeibo)
    
    # 方法二、递归算法
    def feibo2(n):
        if n <= 2:
            return 1
        else:
            while n - 2 > 0:
                return feibo2(n - 1) + feibo2(n - 2)
    
    n = int(input("请输入第几位斐波那契数列:"))
    for i in range(1, n + 1):
        myfeibo = feibo2(i)
        print(myfeibo)
    
    
    # !/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    # 方法三、列表
    def fib(n):
        if n == 1:
            return [1]
        if n == 2:
            return [1, 1]
        fibs = [1, 1]
        for i in range(2, n):
            fibs.append(fibs[-1] + fibs[-2])
        return fibs
    
    
    # 输出前 10 个斐波那契数列
    print
    fib(10)
    View Code

    6.判断素素

    # -*-coding:utf-8-*-
    # 判断素数
    '''
    【题目】:判断101~200之间有多少素数,并输出所有素数。
    分析:
    判断素数方法:用一个数分别去除以2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。'''
    
    t = []
    num = 0
    for i in range(101, 201):
        for j in range(2, i):
            if i % j == 0:
                continue
            else:
                num += 1
                t.append(i)
                break
    print(t, len(t))
    View Code

     7.五人捕鱼游戏

    # -*-coding:utf-8-*-
    # 五人捕鱼问题
    '''
    A、B、C、D、E五人在某天夜里合伙捕鱼 最后疲惫不堪各自睡觉
    第二天A第一个醒来 他将鱼分为5份 扔掉多余的1条 拿走自己的一份
    B第二个醒来 也将鱼分为5份 扔掉多余的1条 拿走自己的一份
    然后C、D、E依次醒来也按同样的方式分鱼 问他们至少捕了多少条鱼
    '''
    
    def main():
        fish = 1 #假设只有一条鱼
        while True:
            enough = True #够不够分
            total = fish #鱼的总数
            for _ in range(5):
                if (total - 1) % 5 == 0:
                    total = (total - 1) // 5 * 4  #如果5个人都分完,则enough等于True
                else:
                    enough = False #如果出现不够分的情况跳出for循环
                    break
            if enough:
                print(fish) #打印鱼的个数
                break
            fish += 1 #不够分鱼的总数加1
    
    
    if __name__ == '__main__':
        main()
    View Code
     
  • 相关阅读:
    网络编程
    模块
    内置函数
    函数应用
    万能参数
    函数
    爬虫
    算法
    Flask
    linux
  • 原文地址:https://www.cnblogs.com/zwldyt/p/13605060.html
Copyright © 2011-2022 走看看