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='\t')
    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

 

 
posted @ 2020-09-02 23:14  到我碗里来吧  阅读(188)  评论(0编辑  收藏  举报