您的位置:首页 > 汽车 > 新车 > python 100个算法

python 100个算法

2024/9/20 11:19:13 来源:https://blog.csdn.net/weixin_58470558/article/details/142174611  浏览:    关键词:python 100个算法

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


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,求应发放奖金总数?

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:# 计算是否达到档位,达到进行计算,未到达则跳过该档位continueelse:money2=(money-money1[i])*raters[i]+money2# 计算提成金额并且和之前计算的提成金额相加money=money-(money-money1[i])# 计算剩余金额,以便后续档位计算
print(f"应发奖金总数为{money2}万元")

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

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

实例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 / ba, 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[:]				# 浅拷贝
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 乘法口诀表。

"""
程序分析:分行与列考虑,共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:给人看的时间
获取和格式化当前时间

"""
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:给人看的时间
暂停一秒输出,并格式化当前时间。

import timefor i in range(4):print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))time.sleep(1)

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

"""
程序分析:我认为原文的解法有点扯,没有考虑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_3print('第%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之间有多少个素数,并输出所有素数。

"""
【定义:】质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
"""import math
ls = []
for i in range(100,200):flag=0for j in range(2,round(math.sqrt(i))+1):if i%j==0:flag=1breakif 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:breakelse:#print(i)ls_2.append(i)print("一共有{}个素数:".format(len(ls_2)),ls_2)

实例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))

实例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=1while True:if flag:breakfor i in range(2,int(target+1)):if target%i==0:print("%d"%i,end='')if target==i:flag=1breakprint('*',end='')target/=ibreak

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

"""
**程序分析:**使用 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)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com