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