有一个银行账户类 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()

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐