python 100个算法

实例001:数字组合

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

python 复制代码
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)


"""简便方法 用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,求应发放奖金总数?

python 复制代码
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又是一个完全平方数,请问该数是多少?

python 复制代码
"""
程序分析 因为168对于指数爆炸来说实在太小了,所以可以直接省略数学分析,用最朴素的方法来获取上限:"""
 
n=0
while (n+1)**2-n*n<=168:
    n+=1
print(n+1)

实例004:这天第几天

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

python 复制代码
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,请把这三个数由小到大输出。

python 复制代码
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:斐波那契数列

斐波那契数列。

python 复制代码
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

python 复制代码
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

将一个列表的数据复制到另一个列表中。

python 复制代码
"""
程序分析:使用列表[:],拿不准可以调用copy模块。
"""
 
import copy
a = [1,2,3,4,['a','b']]
 
b = a					# 赋值
c = a[:]				# 浅拷贝
d = copy.copy(a)		# 浅拷贝
e = copy.deepcopy(a)	# 深拷贝
 
a.append(5)
a[4].append('c')
 
print('a=',a)
print('b=',b)
print('c=',c)
print('d=',d)
print('e=',e)

实例008:九九乘法表

输出 9*9 乘法口诀表。

python 复制代码
"""
程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
"""
 
for i in range(1,10):
    for j in range(1,i+1):
        print('%d*%d=%2ld '%(i,j,i*j),end='')
    print()

实例009:给人看的时间

获取和格式化当前时间

python 复制代码
"""
strftime(format[, tuple]) -> string
将指定的struct_time(默认为当前时间),根据指定的格式化字符串输出
python中时间日期格式化符号:
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12) 
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
"""
 
import time
for i in range(2):
    print(time.localtime(time.time())) #格式化时间戳为本地的时间-time.localtime()
    print(time.strftime('%Y-%m-%d %H:%M:%S %A', time.localtime(time.time()))) #优化格式化化版本-time.strftime()
    print(time.time())
    print(int(time.time()))
    print(str(int(time.time())))
    print(str(int(time.time()))[-2:])
    print("-"*10)
    time.sleep(1)

实例010:给人看的时间

暂停一秒输出,并格式化当前时间。

python 复制代码
import time
 
for i in range(4):
    print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
    time.sleep(1)

实例011:养兔子

题目:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

python 复制代码
"""
程序分析:我认为原文的解法有点扯,没有考虑3个月成熟的问题,人家还是婴儿怎么生孩子?考虑到三个月成熟,
可以构建四个数据,其中:一月兔每个月长大成为二月兔,二月兔变三月兔,三月兔变成年兔,成年兔(包括新成熟的三月兔)生等量的一月兔。
"""
 
month=int(input('繁殖几个月?: '))
month_1=1
month_2=0
month_3=0
month_elder=0
for i in range(month):
    month_1,month_2,month_3,month_elder=month_elder+month_3,month_1,month_2,month_elder+month_3
    print('第%d个月共'%(i+1),month_1+month_2+month_3+month_elder,'对兔子')
    print('其中1月兔:',month_1)
    print('其中2月兔:',month_2)
    print('其中3月兔:',month_3)
    print('其中成年兔:',month_elder)

实例012:100到200的素数

题目:判断101-200之间有多少个素数,并输出所有素数。

python 复制代码
"""
【定义:】质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
"""
 
import math
ls = []
for i in range(100,200):
    flag=0
    for j in range(2,round(math.sqrt(i))+1):
        if i%j==0:
            flag=1
            break
    if flag:
        continue
    # print(i)
    ls.append(i)
    
print("一共有{}个素数:".format(len(ls)),ls)
 
print('\nSimplify the code with "else"\n')
 
 
ls_2 = []
for i in range(100,200):
    for j in range(2,round(math.sqrt(i))+1):
        if i%j==0:
            break
    else:
        #print(i)
        ls_2.append(i)
 
print("一共有{}个素数:".format(len(ls_2)),ls_2)
python 复制代码
实例013:所有水仙花数
	题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
"""
程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
"""
for x in range(100, 1000):
    for i in range(1, 10):
        for j in range(0, 10):
            for k in range(0, 10):
                if i * 100 + j * 10 + k == x and i ** 3 + j ** 3 + k ** 3 == x:
                    print(str(i) + str(j) + str(k))
python 复制代码
实例014:分解质因数
	题目:将一个整数分解质因数。例如:输入90,打印出90=233*5。
"""
**程序分析:**根本不需要判断是否是质数,从2开始向数本身遍历,能整除的肯定是最小的质数。
"""
target=int(input('输入一个整数:'))
print(target,'= ',end='')
 
if target<0:
    target=abs(target)
    print('-1*',end='')
 
flag=0
if target<=1:
    print(target)
    flag=1
 
 
while True:
    if flag:
        break
    for i in range(2,int(target+1)):
        if target%i==0:
            print("%d"%i,end='')
            if target==i:
                flag=1
                break
            print('*',end='')
            target/=i
            break

实例016:输出日期

题目:输出指定格式的日期。

python 复制代码
"""
**程序分析:**使用 datetime 模块。
"""
 
import datetime
print(datetime.date.today())
print(datetime.date(2333,2,3))
print(datetime.date.today().strftime('%d/%m/%Y'))
day=datetime.date(1111,2,3)
day=day.replace(year=day.year+22)
print(day)
相关推荐
又蓝17 分钟前
使用 Python 操作 Excel 表格
开发语言·python·excel
余~~1853816280029 分钟前
稳定的碰一碰发视频、碰一碰矩阵源码技术开发,支持OEM
开发语言·人工智能·python·音视频
0zxm39 分钟前
06 - Django 视图view
网络·后端·python·django
刚学HTML1 小时前
leetcode 05 回文字符串
算法·leetcode
AC使者1 小时前
#B1630. 数字走向4
算法
ROBOT玲玉1 小时前
Milvus 中,FieldSchema 的 dim 参数和索引参数中的 “nlist“ 的区别
python·机器学习·numpy
冠位观测者1 小时前
【Leetcode 每日一题】2545. 根据第 K 场考试的分数排序
数据结构·算法·leetcode
古希腊掌管学习的神2 小时前
[搜广推]王树森推荐系统笔记——曝光过滤 & Bloom Filter
算法·推荐算法
qystca2 小时前
洛谷 P1706 全排列问题 C语言
算法
Kai HVZ2 小时前
python爬虫----爬取视频实战
爬虫·python·音视频