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