有一个银行账户类 Account, 包括名字 , 余额等属性,方法有存钱、取钱、查询余额的操作。要求: 1.在存钱时,注意存款数据必须是整百的格式 2.取钱时,要判断余额是否充足,余额不够的时候要提示余额不足 注意:余额在外界不能直接调用修改 必须是存钱才可修改
class Account():
def __init__(self, name, balance):
self.name = name
self.__balance = balance
#查询余额
def show_balance(self):
print('余额是:{}'.format(self.__balance))
#存钱
def save_money(self, money):
if money > 0 and money % 100 == 0:
self.__balance += money
else:
print(f'存款金额数不满整百')
#取钱
def get_money(self, money):
if self.__balance >= money:
self.__balance -= money
print(f'取款成功')
else:
print('余额不足')
猫类的属性有昵称name,年龄age, 方法有抓老鼠 鼠类的属性有昵称name 创建猫对象信息为5岁的tom猫 创建老鼠对象信息为名为jerry 执行猫抓老鼠的行为 输入如下:一只5岁的tom猫抓到一只名叫jerry的老鼠
class Mouse():
def __init__(self, name):
self.name = name
class Cat():
def __init__(self, name, age):
self.name = name
self.age = age
def catch(self, mouse):
print("一只{}岁的{}猫抓到一只名叫{}的老鼠".format(self.age, self.name, mouse.name))
Jerry_mouse = Mouse('jerry')
Tom_cat = Cat('tom', 5)
Tom_cat.catch(Jerry_mouse)
设计一个狗类: 属性: 品种breed 昵称name 性别gender 行为: 看家lookhome 创建狗类对象: 对象信息如下 哈士奇 旺财 雄 中华田园犬 来福 雌 创建出来对象之后, 调用看家的行为, 输出 xx在看家 [xx是对象的昵称]
class Dog():
def __init__(self, breed, name, gender):
self.breed = breed
self.name = name
self.gender = gender
def lookhome(self):
print("{}在看家".format(self.name))
dog1 = Dog('哈士奇', '旺财', '雄')
dog2 = Dog('中华田园犬', '来福', '雌')
dog1.lookhome()
dog2.lookhome()
为一个州立大学建立账单系统,州内和州外学生的收费标准不同,录取分数线为300分,高于分数线的不收费,低于分数线的话,州内每学分收费$75,州外每学分$200。每个学生账单上都显示学校的名字,学生自己的名字,学分和账单总额。 州内学生类: 属性:学校名 姓名 学分 方法: 计算学费 打印账单 州外学生类: 属性:学校名 姓名 学分 方法:计算学费 打印账单 分别创建一个州内学生对象 和 州外学生对象 分别打印他们的学费账单
class Student():
def __init__(self, school, name, credit):
self.school = school
self.name = name
self.credit = credit
def tuition(self):
'''
学费统计
默认返回不收费
'''
return 0
def bill_printing(self):
print('{}报的学校为{},学分为{},所以学费为{}'.format(self.name, self.school, self.credit, self.tuition()))
class InsideStateStudent(Student):
'''
州内学生,继承自学生类
'''
#重构学费函数
def tuition(self):
if self.credit < 300:
return (300 - self.credit) * 75
else:
# 300分以上 调用父类 收费为0
return super().tuition()
class OutsideStateStudent(Student):
'''
州外学生,继承自学生类
'''
#重构学费函数
def tuition(self):
if self.credit < 300:
return (300 - self.credit) * 200
else:
# 300分以上 调用父类 收费为0
return super().tuition() #super()用于调用父类的函数
#州内学生
inside_stu = InsideStateStudent("可乐大学", "Lucy", 234) #实例化对象
inside_stu.bill_printing() #调用输出方法
#州外学生
outside_stu = OutsideStateStudent("可乐大学", "李雷", 123)
outside_stu.bill_printing()
定义一个点类 Pointer 属性是横向坐标 x与 纵向坐标 y定义一个圆类 Circle 属性有圆心点 cp 与 半径 radius 方法有: 1.求圆的面积 2.求圆的周⻓ 3.求指定点与圆的关系提示:关系有三种 【圆内 圆外 圆上】 设计到的数学公式:指定点与圆心点之间的距离 与 圆的半径进行比较
class Pointer():
def __init__(self, x, y):
self.x = x
self.y = y
class Circle():
def __init__(self, cp, radius):
self.cp = cp
self.radius = radius
def area(self):
print("圆的面积:", 3.14*self.radius**2)
def perimeter(self):
print("圆的周长为:", 3.14*2*self.radius)
def relation(self, pointer):
if self.radius > ((pointer.x - cp.x)**2 + (pointer.y - cp.y)**2)**0.5:
print("点在圆内")
elif self.radius == (pointer.x**2 + pointer.y**2)**0.5:
print("点在圆上")
else:
print("点在圆外")
pointer = Pointer(x=12, y=13)
cp = Pointer(x=40, y=12)
circle = Circle(cp, 12)
circle.area()
circle.perimeter()
circle.relation(pointer)
定义一个汽车类Vehicle, 要求: 1.属性包括:汽车品牌brand、颜色color和速度speed, 其中速度的起始值是0。 2.为属性提供访问的方法。注意:汽车品牌一旦初始化之后不能修改。 3.方法有加速、减速。
class Vehicle():
def __init__(self, brand, color, speed = 0):
self.__brand = brand
self.color = color
self.speed = speed
def get_brand(self):
return self.__brand
def add_speed(self, speed):
self.speed += speed
print("现在的车速为:{}".format(self.speed))
def subtract_speed(self, speed):
if self.speed < speed:
print("减速失败")
else:
self.speed -= speed
print("当前车速:{}".format(self.speed))
car = Vehicle('玛莎拉蒂', '蓝色')
print(f'车的品牌是{car.get_brand()}')
# 加速
car.add_speed(120)
# 减速
car.subtract_speed(40)
(1)编写一个矩形类Rect,包含:矩形的宽width;矩形的高height。要求创建对象的时候必须给width和height传值 两个方法:求矩形面积的方法area(),求矩形周长的方法perimeter()(2)通过继承Rect类编写一个具有确定位置的矩形类PlainRect,其确定位置用矩形的左上角坐标来标识,包含: 添加两个属性:矩形左上角坐标start_x和start_y。要求创建PlainRect对象的时候width和height必须赋值,start_x和start_y可以赋值可以不赋值。 添加一个方法:判断某个点是否在矩形内部的方法is_inside()。如在矩形内,返回True, 否则,返回False。
class Rect():
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
print("矩形面积:", self.width * self.height)
def perimeter(self):
print("矩形周长:", (self.width+self.height)*2)
class PlainRect(Rect):
def __init__(self, width, height, start_x = 0, start_y = 0):
super().__init__(width, height)
self.start_x = start_x
self.start_y = start_y
def is_inside(self, x, y):
if (self.start_x <= x <= self.start_x + self.width) and (self.start_y <= y <= self.start_y + self.height):
return True
return False
# 创建起始点为0,0 宽高都是100的矩形
pr = PlainRect(100, 100)
print(f'矩形的面积是{pr.area()}')
print(f'矩形的周长是{pr.perimeter()}')
print(f'其他点和矩形的关系{pr.is_inside(100, 17)}')
nums = [17, 29, 31, 28, 44, 51, 24] 使用高阶函数filter将nums中的能被3整除的数据保留,其他的过滤掉,结果使用列表展示
nums = [17, 29, 31, 28, 44, 51, 24]
def num(i):
return i % 3 == 0
num_r = list(filter(num, nums))
print(num_r)
封装一个函数:获取指定数据的阶乘 5的阶乘等于5*4*3*2*1
def count(num):
result = 1
for i in range(1, num + 1):
result *= i
return result
print(count(10))
定义一个函数,比较两个数的大小如果前者大于后者,返回1如果前者小于后者,返回-1两者相等,返回0
def num(num1, num2):
if num1 > num2:
return 1
elif num1 < num2:
return -1
else:
return 0
print(num(1,2))
定义一个函数,判断一个3位数是不是水仙花数 水仙花数:是一个三位数,并且每位上的立方和结果等于本身 例如 153 = 1 ** 3 + 5 ** 3 + 3 ** 3
def sxh(num):
g = num % 10
s = num // 10 % 10
b = num // 100
if g**3 + s**3 + b**3 == num:
print(f"{num}是水仙花数")
else:
print(f"{num}不是水仙花数")
sxh(153)
录入一个字符,获取其在编码规则中对应的十进制数据
ch = input('录入一个字符:')
num = ord(ch)
print(f'{ch}在编码规则中对应的十进制数据是{num}')
封装一个函数:判断指定数据是不是素数 素数:只能被1和本身整除的大于1的整数
def sushu(num):
count = 0
if num <= 1:
print(f"{num}不是素数")
else:
for i in range(1, num+1):
if num % i == 0:
count += 1
if count == 2:
print(f"{num}是素数")
else:
print(f"{num}不是素数")
sushu(10)
声明一个列表,在列表中使用字典保存6个学生的信息 students = [ {'name': '小花', 'age': 19, 'score': 90, 'gender': '女', 'tel': '15300022839'}, {'name': '明明', 'age': 20, 'score': 40, 'gender': '男', 'tel': '15300022838'}, {'name': '华仔', 'age': 18, 'score': 90, 'gender': '女', 'tel': '15300022839'}, {'name': '静静', 'age': 16, 'score': 90, 'gender': '不明', 'tel': '15300022428'}, {'name': 'Tom', 'age': 17, 'score': 59, 'gender': '不明', 'tel': '15300022839'}, {'name': 'Bob', 'age': 18, 'score': 90, 'gender': '男', 'tel': '15300022839'} ] 要求: 统计不及格学生的个数 统计未成年学生的个数 打印手机尾号是8的学生的名字
students = [
{'name': '小花', 'age': 19, 'score': 90, 'gender': '女', 'tel': '15300022839'},
{'name': '明明', 'age': 20, 'score': 40, 'gender': '男', 'tel': '15300022838'},
{'name': '华仔', 'age': 18, 'score': 90, 'gender': '女', 'tel': '15300022839'},
{'name': '静静', 'age': 16, 'score': 90, 'gender': '不明', 'tel': '15300022428'},
{'name': 'Tom', 'age': 17, 'score': 59, 'gender': '不明', 'tel': '15300022839'},
{'name': 'Bob', 'age': 18, 'score': 90, 'gender': '男', 'tel': '15300022839'}
]
count1 = 0 #不及格人数
count2 = 0 #未成年人数
for i in students:
if i['score'] < 60:
count1 += 1
if i['age'] <18:
count2 += 1
if i['tel'][-1] == '8':
print(i['name'])
print(f'不及格人数{count1}\n未成年人数{count2}')
已知有一段英文语句 sentence = 'Hi Nice to meet you Are you glad to meet me too' 统计每个单词出现的次数
sentence = 'Hi Nice to meet you Are you glad to meet me too'
worlds = sentence.split(' ')
w_count_dict = {}
for w in worlds:
if w in w_count_dict:
w_count_dict[w] += 1
else:
w_count_dict[w] = 1
print(w_count_dict)
已知信息学院的学生共有15人,其中选择Python、Java、C语言的人分别有 【没有重名的人 一个名字代表一个人】 python = {'王萌', '李晓丽', '张慧慧', '王晓梅'} java = {'乔榛', '王萌', '齐辉', '赵真真'} c = {'王晓梅', '齐辉', '李慧萌', '王萌'} 求: 没有参加选课的学生有多少名 三门课程都选的学生有哪些 选择了两门课程的学生有哪些
python = {'王萌', '李晓丽', '张慧慧', '王晓梅'}
java = {'乔榛', '王萌', '齐辉', '赵真真'}
c = {'王晓梅', '齐辉', '李慧萌', '王萌'}
# 参加选课的 就对以上的集合求并集 把重复选课的保留1个 就是所有选课的
all_select = python | java | c
print(f"还有{15 - len(all_select)}个学生没有选课")
# 三门课程都选的 那就是在3个集合中都有的 求交集
three_select = python & java & c
print(f'三门课程全选的学生有{three_select}')
# 选择的两门的 那就得两两交集了 把结果合并 并完之后还会存在一种人就是3门课全选了的 需要把它减掉
two_select = ((python & java) | (python & c) | (java & c)) - three_select
print(f'选择了两门课程的学生有{two_select}')
在1到10之间随机选择5个数添加在列表中,要求这5个数不允许重复 随机数需要导入模块random,语句是 import random ele = random.randint(1, 10) # 就是在1到10之间随机选择一个数
import random
num_list = []
while len(num_list) < 5:
ele = random.randint(1, 10)
if ele not in num_list:
num_list.append(ele)
print(num_list)
已知班级中人员姓名如下: names = ['张美', '李欢欣', '赵乐乐', '张佳', '王继辉', '李美玲'] 需求: 1. 利用列表生成式 获取姓李的同学 2. 获取名字长度是2的同学
names = ['张美', '李欢欣', '赵乐乐', '张佳', '王继辉', '李美玲']
names_li = [n for n in names if n[0] == '李']
print(names_li)
names_2 = [n for n in names if len(n) == 2]
print(names_2)
已知字符串 s = 'Hello_520_爱你_1314_一生一世_World',要求提取字符串中的数字符号 【期待结果是'5201314'】
s = 'Hello_520_爱你_1314_一生一世_World'
digit_str = ''
for ch in s:
if '0' <= ch <= '9':
digit_str += ch
print(digit_str)
使用inupt录入一个圆的半径,求圆的面积和周长 注:圆周率使用3.14就可以,乘法的运算符是*
r = int(input("请输入圆的半径:"))
s = 3.14 * r ** 2
c = 3.14 * 2 * r
print(f"圆的面积为{s},圆的周长为{c}")
假设今天的上课时间为15678秒,编程计算今天上课时间是多少小时,多少分钟,多少秒;以‘多少时多少分多少秒’的方式表示出来
time = 15678
sec = time % 60
min = time % 3600 // 60
h = time // 3600
print(f"{h}小时{min}分钟{sec}秒")
水仙花数校验器:输入一个三位数,判断其是不是水仙花数 水仙花数是一个三位数,特点是每位上数的立方和结果是其本身 例如 153 = 1**3 + 5 ** 3 + 3**3
num = int(input("请输入一个三位数:"))
ge = num % 10
shi = num // 10 % 10
bai = num // 100
if ge ** 3 + shi ** 3 + bai ** 3 == num:
print(f"{num}是水仙花数")
else:
print(f"{num}不是水仙花数")
键盘输入年,验证输入的年是否是闰年,如果是输出闰年的2月份有29天 否则输出平年的2月份有28天 闰年概念: 闰年分为两类 普通闰年:是4的倍数但是不是100的倍数 世纪闰年:是400的倍数
year = int(input("请输入年份:"))
if year % 4 == 0 and num % 100 != 0 and num % 400 == 0:
print("闰年的2月份有29天")
else:
print("平年的2月份有28天")
定义两个变量保存一个人的身高和体重,编程实现判断这个人的身材是否正常!公式: 体重(kg)/身高(m)的平方值 在18.5 ~ 24.9之间属于正常,小于18.5是偏瘦,大于24.9是偏胖。
height = float(input("请输入您的身高(m):"))
weight = float(input("请输入您的体重(kg):"))
if 18.5 <= weight / (height) ** 2 <= 24.5:
print("正常")
else:
print("不正常")
录入一个百分制的学生成绩,根据成绩进行分级 90-100 A 80-90 B 70-80 C 60-70 D 0-60 E
score = float(input("请输入一个百分制成绩:"))
if 90 <= score <= 100:
print("A")
elif 80 <= score < 90:
print("B")
elif 70 <= score < 80:
print("C")
elif 60 <= score < 70:
print("D")
else:
print("E")
三角形校验器:录入三角形的三个边长,判断三个数据能否构成三角形 构成三角形的条件是任意两边之和大于第三边
a = int(input("请输入a的值:"))
b = int(input("请输入b的值:"))
c = int(input("请输入c的值:"))
if (a + b > c) and (a + c > b) and (c + b > a):
print("可以构成三角形")
else:
print("不能构成三角形")
一根绳子长1000米, 每天截取剩余绳子的四分之一,问多少天后绳子长度还剩下不足3米
long = 1000
count = 0
while long >= 3:
long = long - long / 4
count += 1
print(count)
一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度8848.13米 注意单位换算 1m = 1000mm
height = 0.00008
count = 0
while height < 8848.13:
height = height * 2
count += 1
print(f"{height}米,{count}天")
公园里有一只猴子和一堆桃子,猴子每天吃掉桃子总数的一半,把剩下一半中扔掉一个坏的。到第七天的时候,猴子睁开眼发现只剩下一个桃子。问公园里刚开始有多少个桃子?
peach = 1
day = 0
while day < 7:
peach = (peach + 1) * 2
day += 1
print(peach)
求1到100以内能被7或者3整除,但是不能同时被3和7整除的数
for i in range(1, 101):
if (i % 3 == 0 or i % 7 == 0) and i % 21 != 0:
print(i)
统计101~200中素数的个数,并且输出所有的素数。(素数又叫质数,就是只能被1和它本身整除的数)
nums = []
sum = 0
for i in range(101, 201):
count = 0
for j in range(1, i):
if i % j == 0:
count += 1
if count == 1:
nums.append(i)
sum += 1
print(nums,sum,"个")
求斐波那契数列中第n个数的值,n是正整数。n值由控制台输入 > **说明**:斐波那契数列是这样的一个数列:1、1、2、3、5、8、13、21、34、.... ,第一个数和第二个数是1,从第三个数开始每个元素是前两个元素相加的和。
a = int(input('请输入想求斐波那契数列第几位的值:'))
b = 0
c = 1
d = 1
for i in range(2, a + 1):
d = b + c
b = c
c = d
print(f'第{a}位数的值是{d}')
百马百担"问题:一匹大马能驮3担货,一匹中马能驮2担货,两匹小马能驮1担货,如果用一百匹马驮一百担货,问有大、中、小马各几匹?
#所有的货物全部用大马去运输:34
#所有货物全部用中马去运输:50
#所有的货物全部用小马运输:200
for i in range(34): #表示大马
for j in range(50): #表示中马
k = 100 - i - j #表示小马
if i*3 + j*2 + k*0.5 == 100: #表示货物的数量刚好是100担
print(f"大马{i},中马{j},小马{k}")
输出20~80之间能被3整除的整数, 每行5个
count = 0
for i in range(20, 81):
if i % 3 == 0:
print(i, end=' ')
count += 1
if count == 5:
print()
count = 0
声明一个列表,在列表中保存6个学生的信息( list = [ {'name': '张三', 'age': 18, 'score': 50, 'tel': 18866669988, 'sex': '男'}, {'name': '李四', 'age': 16, 'score': 88, 'tel': 18866669932, 'sex': '女'}, {'name': '张三', 'age': 17, 'score': 48, 'tel': 18866669998, 'sex': '不明'}, {'name': '陈一军', 'age': 61, 'score': 59, 'tel': 18866669912, 'sex': '男'}, {'name': '陈二军', 'age': 49, 'score': 49, 'tel': 18866669949, 'sex': '不明'}, {'name': '陈三军', 'age': 49, 'score': 61, 'tel': 18866669959, 'sex': '女'} ]) (1) 统计不及格学生的个数 (score < 60) (2) 打印不及格学生的名字和对应的成绩 (3) 统计未成年学生的个数 (age < 18) (4) 打印手机尾号是8的学生的名字 (5) 打印最高分和对应的学生的名字 提示: 方式一: 排序算法 方式二: sort(key=)
list = [
{'name': '张三', 'age': 18, 'score': 50, 'tel': 18866669988, 'sex': '男'},
{'name': '李四', 'age': 16, 'score': 88, 'tel': 18866669932, 'sex': '女'},
{'name': '张三', 'age': 17, 'score': 48, 'tel': 18866669998, 'sex': '不明'},
{'name': '陈一军', 'age': 61, 'score': 59, 'tel': 18866669912, 'sex': '男'},
{'name': '陈二军', 'age': 49, 'score': 49, 'tel': 18866669949, 'sex': '不明'},
{'name': '陈三军', 'age': 49, 'score': 61, 'tel': 18866669959, 'sex': '女'}
]
count_score = 0
count_age = 0
tic_score = {}
for i in list:
#不及格人数及打印其姓名和成绩
if i['score'] < 60 :
count_score += 1
print(f"不及格学生姓名和成绩{i['name']}:{i['score']}")
#未成年人数
if i['age'] < 18:
count_age += 1
#手机尾号是8的
if i['tel'] % 10 == 8:
print(f'手机尾号为8{i["name"]}')
tic_score[i["name"]] = i["score"]
print(f"不及格的人数是{count_score}")
print(f"未成年的人数是{count_age}")
#获取最高分的姓名和成绩
max_score = 0
for stu in list:
if stu['score'] > max_score:
max_score = stu['score']
name = stu['name']
print(f"成绩最高的是{name}分数为{max_score}")
'''(6) 删除性别不明的所有学生(选做)'''
i = 0
while i < len(list):
if list[i]['sex'] == '不明':
list.pop(i)
i -= 1
i += 1
print(list)
'''(7) 将列表按学生成绩从大到小排序(难,选做)'''
'''
# 第一种方式:
# ele 表示列表中的每个字典
def pai(ele):
return ele['score'] # 将每个字典中的score成绩字段返回
list.sort(reverse=True,key=pai) # key=pai 表示将字典中的数据分别传入pai处理
for stu in list:
print(stu)
'''
# 第二种方式:
list.sort(reverse=True,key=lambda stu:stu['score']) # lambda是匿名函数表达式
for stu in list:
print(stu)
封装函数,计算传入字符串中单个【数字】、【字母】、【空格] 以及 【其他字符】的个数
def jishu(str):
shuzi = 0
zimu = 0
kongge = 0
qita = 0
for i in str:
# print(i)
# 判断i是否是数字
if i.isdigit():
shuzi += 1
elif i.isalpha():
zimu += 1
elif i == " ":
kongge += 1
else:
qita += 1
print(f'数字有:{shuzi}个')
print(f'字母有:{zimu}个')
print(f'空格有:{kongge}个')
print(f'其他字符有:{qita}个')
# jishu(str1)
写一个函数,识别字符串是否符合python语法的变量名 1.数字字母下划线,且不能以数字开头. 2.不能使用关键字 import keyword print(keyword.kwlist)
def get_str(str):
# 如果字符串不是数字开头和不是关键字
if str[0].isdigit() == False and keyword.iskeyword(str) == False:
for i in str:
# 判断字符串中的每个字符是否是数字 字母 和下划线,若是,符合要求
if i.isdigit() or i.isalpha() or i == "_":
pass
else:
# 否则证明 字符串的组成部分不是数字 字母 下划线该字符串命名不合法
print('不符合变量名命名规则')
else:
print('不符合变量名命名规则,不能数字开头或者是关键字')
# get_str("1hello")
# get_str('hello1')
# get_str('for')
写一个函数计算两个数的最小公倍数; 并返回结果打印出来
def func(a,b):
for i in range(max(a,b),a*b+1):
if i % a == 0 and i % b == 0:
return i
# print('8和12的最小公倍数是:',func(8,12))
# print('2和4的最小公倍数是:',func(2,4))
年月日分别为自定义函数的参数,判断某一个日期是否为合法的日期; (选做) 如: 2020年12月33日不是合法的日期 2021年2月29日是不合法的日期 def fn3(year, month, day): pass
def get_runnian(year):
return (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)
def fn3(year, month, day):
# 判断月份是否合法:
if month < 1 or month > 12:
return False
# 判断日期是否合法
if month in [1,3,5,7,8,10,12]:
return 1 <= day <= 31
if month == 2:
if get_runnian(year):
return 1 <= day <= 29
return 1 <= day <= 28
return 1 <= day <= 30
print(fn3(2001,4,29))
使用递归实现:计算某个数的阶乘
def fn1(n):
if n == 1:
return 1
return n * fn1(n-1)
print(fn1(10))
封装函数,传入m,得到 第m个 斐波那契数 #1 1 2 3 5 8 13 21 临界值: 第一个数和第二个数的值为1 公式:第m个数 = 第m-1个数 + 第m-2个数
def fn2(m):
if m < 3:
return 1
return fn2(m-1) + fn2(m-2)
print(fn2(3))
封装函数,传入n,得到 前n个 斐波那契数 1 1 2 3 5 8 13 21
def fn2(m):
if m < 3:
return 1
return fn2(m-1) + fn2(m-2)
def fn3(n):
for i in range(1, n+1):
print(fn2(i))
fn3(5)
写一个装饰器来统计函数运行的时间 import time time.time() 获取当前的时间戳
import time
def operation_time(fn):
def inner(*args):
# 获取fn函数执行前的时间戳
start = time.time()
fn(*args)
# 获取fn函数执行完后的时间戳
end = time.time()
print('运行时间:',end - start)
return inner
@operation_time
def get_sum():
sum = 0
for i in range(100000000):
sum *= i
get_sum()
兔子繁殖问题。 设有一对新生的兔子,从第4个月开始他们每个月月初都生一对新兔子, 新生的兔子从第4个月开始又每个月月初生一对兔子。 按此规律,并假定兔子没有死亡,20个月末共有多少对兔子? 1个月大 2个月大 3个月大 4个月大(包含大于4个月的) 兔子的总对数 第一个月 1 0 0 0 1 第二个月 0 1 0 0 1 第三个月 0 0 1 0 1 第四个月 1 0 0 1 2 第五个月 1 1 0 1 3 第六个月 1 1 1 1 4 第七个月 2 1 1 2 6 第八个月 3 2 1 3 9 第九个月 4 3 2 4 13 第十个月 6 4 3 6 19 临界值: f(1)=f(2)=f(3)=1 公式: f(n) = f(n-1) + f(n-3)
def f(n):
if n < 4:
return 1
return f(n-1)+f(n-3)
print(f(20))
定义函数实现冒泡排序功能,参数是要排序的列表,返回值是排序后的列表. 如list1=[1,3,5,6,7,9,0,2,4,7,9], 排序后的结果:[0, 1, 2, 3, 4, 5, 6, 7, 7, 9, 9]
list1=[1,3,5,6,7,9,0,2,4,7,9]
def fn(list1):
for i in range(len(list1) - 1):
for j in range(len(list1) - 1 - i):
if list1[j] > list1[j+1]:
list1[j],list1[j+1] = list1[j+1],list1[j]
return list1
print(fn(list1))
定义一个函数求偶数的累加和,参数是范围,如参数是n,则表示求1-n的范围内偶数的累加和,结果以返回值形式返出
def sum(n):
sum1 = 0
for i in range(2,n+1,2):
sum1 += i
return sum1
print(sum(4))
定义一个函数: 实现产生验证码的功能,参数是产生验证码的个数,验证码要求是大小写字母数字的随机组合.
import random
def yanzheng(n):
str1 = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890'
list1 = []
for i in range(n):
list1.append(random.choice(str1))
str2 = ''.join(list1)
return str2
定义一个函数: 能产生1-20之间指定个数的随机数(随机数要求保存到列表中),参数是随机数的个数.
import random
def rand_num(n):
list1 = []
for i in range(n):
list1.append(random.choice(range(1,21)))
return list1
已知字典dict1 = {‘a’:’001’,’b’:’002’,’c’:’003’},请写代码完成key与value的交换
dict1 = {'a':'001','b':'002','c':'003'}
dict2 = {}
values1 = dict1.values()
keys1 = dict1.keys()
for i in values1:
for j in keys1:
dict2[i] = j
print(dict2)
给定一个列表,其中该列表中的元素均是字符串,请写代码删除里面的空字符串元素.
list1 = ['12',' ','31','','123','','21314']
n = 0
while n < len(list1):
if list1[n] == '':
list1.pop(n)
n -= 1
n += 1
print(list1)
# 题目:创建函数, 从文件guishudi.txt中获取数据,输入完整手机号11位,匹配前7位,输出对应的地址和卡类型 # # 60268|1340475|0431|吉林省长春市|吉林移动大众卡 # 手机号前7位 :1340475
def fun(phone):
with open('guishudi.txt','r',encoding='utf-8') as fl:
fl_list = fl.readlines()
for i in fl_list:
list1 = i.split('|')
if list1[1] == str(phone)[:7]:
print(list1[3],list1[4])
break
fun(13404751231)
#从文件kaifanglist.txt中获取数据 # 题目: 开房查询 # 创建函数,传入一个名字,查找到这哥们所有的开房记录, # 然后写入到以这哥们名字为名的txt文件中 如:张三.txt # # 例如: # 胡美娜,340402198402051229,F,19840208,-,-,13601320094,-,-,haoxinqing@163.com,0 # 徐旸,430103197302241519,M,19730222,-,-,13925066216,-,-,xutommy@yahoo.com.cn, # 戚长鹤,362101193112180010,M,19811218,604,-,13870774166,-,-,qchaini@163.com, # 陈伟,320107197288164212,M,19720816,-,-,13818333169,-,-,roger@126.com,0 # 姜艳彬,230521192112022713,M,19811202,-,-,13695189595,-,-,jyb@163.com,
def fn(name):
with open('kaifanglist.txt', 'r', encoding='utf-8') as fl:
fl_list = fl.readlines()
for i in fl_list:
list1 = i.split(',')
if list1[0] == name:
with open(f'{name}.txt','a',encoding='utf-8') as fl1:
fl1.write(i)
fn('刘斐')
#从文件youbian.txt中获取数据 # 题目: 邮编查询 # 创建函数, 传入一个邮编,得到归属地 #[110000,"北京市"], # [110100,"北京市市辖区"], # [110101,"北京市东城区"], # [110102,"北京市西城区"], # [110103,"北京市崇文区"], # [110104,"北京市宣武区"], # [110105,"北京市朝阳区"], # [110106,"北京市丰台区"], # [110107,"北京市石景山区"],
def fn(num):
with open('youbian.txt', 'r', encoding='utf-8') as fl:
fl_str = fl.read()
fl_str1 = ''
fl_list1 = []
for i in fl_str:
if i == '[' or i == ']' or i == '"':
pass
else:
fl_str1 += i
# print(fl_str1)
fl_list = fl_str1.split(',\n')
for j in fl_list:
list1 = j.split(',')
fl_list1.append(list1)
for i in fl_list1:
if i[0] == str(num):
print(i[1])
fn(110100)
# 递归删除文件夹(可能包含子文件或子文件夹) # 【温馨提示:创建一个文件夹,不要直接操作已有的文件夹】 # 提示:要先将文件夹中的所有子文件删除再删除本文件夹 # remove(): 删除文件 # rmdir(): 删除空目录
import os
path = "/Users/XXX/Desktop/t4测试"
def del_dir(path):
# 判断文件是否存在
if not os.path.exists(path):
print("路径不存在")
return
file_list = os.listdir(path) # 查看指定目录下面所有的文件夹和文件
for file in file_list:
# 获取文件或者文件夹的绝对路径
file_path = os.path.join(path,file) # 将文件名根路径拼接
# 判断file_path是文件还是文件夹
if os.path.isfile(file_path):
os.remove(file_path)
# 文件夹
else:
del_dir(file_path)
# 最后删除文件夹
os.rmdir(path)
del_dir(path)
拷贝文件【考虑大文件拷贝,每次读取1024字节拷贝】
import os
import math
#copy二进制文件
def copy_file(file_name):
#查看文件大小
file_size = os.path.getsize(file_name)
for i in range(math.ceil(file_size/1024)):
with open('shipin.mp4','rb') as rf:
#将读取指针移动到上次读取的位置
rf.seek(1024*i,0)
str = rf.read(1024)
with open('shipin1.mp4','ab') as rf1:
rf1.write(str)
copy_file('shipin.mp4')
#copy普通文件
with open('kaifanglist.txt','r',encoding='utf-8') as fp:
with open('kaifanglistcopy.txt','a',encoding='utf-8') as fp1:
while True:
file = fp.read(1024)
if not file:
break
fp1.write(file)
fp1.flush()
定义一个Time类,对象属性包括:时、分、秒;通过__init__初始化属性。对象方法有: add_hour(self,num) 把小时加num add_minute(self,num) 把分钟加num add_second(self,num) 把秒数加num 定义show方法,打印格式化的时间字符串:"04:16:09"
class Time():
def __init__(self,h,m,s):
self.h = h
self.m = m
self.s = s
def add_hour(self,num):
if self.h + num >= 24:
self.h = (self.h + num) % 24
else:
self.h += num
return self.h
def add_minute(self,num):
if self.m + num >= 60:
count = (self.h + num) // 60
self.m = (self.h + num) % 60
self.add_hour(count)
else:
self.m += num
return self.m
def add_second(self,num):
if self.s + num >= 60:
count1 = (self.s + num) // 60
self.s = (self.s + num) % 60
self.add_minute(count1)
else:
self.s += num
return self.s
def show(self):
if self.s < 10:
s = '0'+str(self.s)
else:
s = str(self.s)
if self.m < 10:
m = '0'+str(self.m)
else:
m = str(self.m)
if self.h < 10:
h = '0'+str(self.h)
else:
h = str(self.h)
print(f"{h}:{m}:{s}")
类的设计 员工类Employee: 属性: 姓名name, 年龄age, 性别sex, 编号no, 薪资salary 公司类Company 属性: 名称name, 所有员工employee_list[有多个员工] 方法: sort 对所有员工按照薪资降序排序
class Employee:
def __init__(self,name,age,sex,no,salary):
self.name = name
self.age = age
self.sex = sex
self.no = no
self.salary = salary
class Company:
def __init__(self,name,employee_list):
self.name = name
self.employee_list = employee_list
def sort(self):
self.employee_list.sort(reverse = True,key=lambda emp:emp[4])
print(self.employee_list)
emp1 = ('zhangsan',18,'男',123,12000)
emp2 = ('lisi',19,'女',124,10000)
# com = Company('大大大公司',[emp1,emp2])
# com.sort()
题目:有几个生产车间生产,几个消费者购买,当生产达到一定数量时,停止生产。
import threading
import time
condtion = threading.Condition()
sheep = ['1件产品','1件产品','1件产品','1件产品','1件产品']
class Producer(threading.Thread):
def __init__(self, name):
super().__init__(name=name)
pass
def run(self):
global condtion, sheep
while True:
time.sleep(0.1)
condtion.acquire()
if len(sheep) < 10:
print(self.name + "生产了1件产品")
sheep.append('1件产品')
condtion.notifyAll()
pass
else:
print("仓库满了,停止生产!")
condtion.wait()
pass
condtion.release()
pass
pass
class Customer(threading.Thread):
def __init__(self, name):
super().__init__(name=name)
pass
def run(self):
global condtion, sheep
while True:
time.sleep(0.1)
condtion.acquire()
if len(sheep) > 0:
meat = sheep.pop()
print(self.name + "购买了" + meat + "还剩多少" + str(len(sheep)) + "件")
condtion.notifyAll()
pass
else:
print("买光了,等待")
condtion.wait()
pass
condtion.release()
pass
pass
if __name__ == "__main__":
p1 = Producer("1号生产车间")
p2 = Producer("2号生产车间")
p3 = Producer("3号生产车间")
p4 = Producer("4号生产车间")
p5 = Producer("5号生产车间")
p6 = Producer("6号生产车间")
p1.start()
p2.start()
p4.start()
p5.start()
p6.start()
c1 = Customer('小王')
c2 = Customer('小李')
c3 = Customer('小贾')
c4 = Customer('小沈')
c5 = Customer('小刘')
c1.start()
c2.start()
c3.start()
c4.start()
c5.start()