python 常见算法(1-50题)

实例001:数字组合
有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

1:
total=0
for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            if ((i!=j)and(j!=k)and(k!=i)):
                print(i,j,k)
                total+=1
print(total)2"""简便方法 用itertools中的permutations即可python练手项目列表。"""
 
import itertools
sum2=0
a=[1,2,3,4]
for i in itertools.permutations(a,3):
    print(i)
    sum2+=1
print(sum2)

实例002:个税计算
企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

money=float(input("请输入当月利润(单位:万):"))
money1=[100,60,40,20,10,0]
# 提成档位
raters=[0.01,0.015,0.03,0.05,0.075,0.1]
# 提成比例
money2=0
# 提成总金额
for i in range(len(money1)):
    if money-money1[i]<0:
        # 计算是否达到档位,达到进行计算,未到达则跳过该档位
        continue
    else:
        money2=(money-money1[i])*raters[i]+money2
        # 计算提成金额并且和之前计算的提成金额相加
        money=money-(money-money1[i])
        # 计算剩余金额,以便后续档位计算
print(f"应发奖金总数为{
     
     money2}万元")
 

实例003:完全平方数
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

"""
程序分析 因为168对于指数爆炸来说实在太小了,所以可以直接省略数学分析,用最朴素的方法来获取上限:"""
 
for m in range(1, 168):  # 此处的168就是一个极限值,m一定不会大于168
    for n in range(m):  # 这样保证m是比n大的
        if (m * m - n * n == 168):  # 符合此条件即可
            x = n * n - 100
            print("此整数为%d" % x)

实例004:这天第几天
输入某年某月某日,判断这一天是这一年的第几天?

from datetime import datetime  
  
# 用户输入  
year = int(input("请输入年份: "))  
month = int(input("请输入月份: "))  
day = int(input("请输入日期: "))  
  
# 创建一个datetime对象  
date_obj = datetime(year, month, day)  
  
# 创建一个表示该年年初的datetime对象  
start_of_year = datetime(year, 1, 1)  
  
# 计算两个日期之间的时间差(天数),并加1(因为包含起始日期)  
day_of_year = (date_obj - start_of_year).days + 1  
  
# 输出结果  
print(f"{
     
     year}{
     
     month}{
     
     day}日是该年的第{
     
     day_of_year}天。")

实例005:三数排序
输入三个整数x,y,z,请把这三个数由小到大输出。

x = int(input("请输入x: "))  
y = int(input("请输入y: "))  
z = int(input("请输入z: "))  
  
# 将输入的数存入列表  
numbers = [x, y, z]  
  
# 对列表进行排序  
numbers.sort()  
  
# 输出排序后的列表  
print(numbers)  
  
# 或者以空格分隔的方式输出  
print(numbers[0], numbers[1], numbers[2])

实例006:斐波那契数列
斐波那契数列。

def fibonacci_iterative(n):  
    if n <= 0:  
        return 0  
    elif n == 1:  
        return 1  
    a, b = 0, 1  
    for _ in range(2, n + 1):  # 从第三个数开始迭代,因为前两个数已经初始化了  
        a, b = b, a + b  # 更新a和b的值  
    return a  # 返回第n个数  
  
# 示例  
print(fibonacci_iterative(10))  # 输出:55

斐波那契数列 II

a = 2.0
b = 1.0
s = 0
for n in range(20):
    s += a / b
    a, b = a + b, a
print(a, b)  # a为分母,b为分子
print(s)

实例007:copy
将一个列表的数据复制到另一个列表中。

"""
程序分析:使用列表[:],拿不准可以调用copy模块。
"""
 
import copy
a = [1,2,3,4,['a','b']]
 
b = a					# 赋值
c = a
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虾小眠0526

你们的鼓励是我前进的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值