当前位置:首页>python>python核心基础语法(5)

python核心基础语法(5)

  • 2026-10-11 07:49:23
python核心基础语法(5)

python

数据统计综合练习


# 开发一个教务管理系统,在该系统中可以维护和管理学员的成绩信息,具体需求如下:
# 1. 添加学生信息:根据提示录入学生姓名、语文、数学、英语成绩,录入完成保存到系统中。
# 2. 修改学生信息:要求输入要修改的学生姓名,然后再提示输入语文、数学、英语成绩,输入完成后修改学员信息。
# 3. 删除学生信息:要求输入要删除的学生姓名,根据姓名删除学生信息。
# 4. 查询学生信息:要求输入要查询的学生姓名,根据姓名查询学生信息并输出。
# 5. 列出所有学生:遍历所有学生信息并输出。
# 6. 统计班级成绩:统计班级语文、数学、英语成绩的最高分、最低分、平均分,以及语文、数学、英语最高分和最低分的学员姓名。
# 7. 退出系统。

print("请输入你的操作")
arr = {}
while True:
    caozuo = input("请输入你的操作")
if caozuo == "添加学生信息":
print("请输入学生的姓名,语文,数学,英语成绩")
while True:
            data = input("请输入学生的姓名")
if (data == '退出系统'):
break
else:
                name = data
                Chinese = int(input("请输入语文成绩"))
                Maths = int(input("请输入数学成绩"))
                english = int(input("请输入英语成绩"))
            arr[name] = {
"语文": Chinese,
"数学": Maths,
"英语": english
            }
elif caozuo == '查询学生信息':
        name = input("请输入要查询的学生的姓名")
while True:
if (name == '退出系统'):
break
else:
if (arr.get(name) == None):
print("该学生不存在")
else:
print(arr.get(name))
break
elif caozuo == '修改学生信息':
        name = input("请输入要修改的学生的姓名")
while True:
if (name == '退出系统'):
break
else:
                Chinese = int(input("请输入语文成绩"))
                Maths = int(input("请输入数学成绩"))
                english = int(input("请输入英语成绩"))
                arr[name] = {
"语文": Chinese,
"数学": Maths,
"英语": english
                }
break
elif caozuo == '删除学生信息':
        name = input("请输入要删除的学生的姓名")
while True:
if (name == '退出系统'):
break
else:
                del arr[name]
break
elif caozuo == '列出所有学生':
if (arr):
print(arr)
elif caozuo == '统计班级成绩':
print("统计")
        chineselist = []
        mathlist = []
        englishlist = []
        peoplelist = []
for name in arr:
            chineselist.append(arr[name]["语文"])
            mathlist.append(arr[name]["数学"])
            englishlist.append(arr[name]["英语"])
            peoplelist.append(arr.keys())
print(chineselist)
print(f'语文最高分{max(chineselist)}')
print(f'数学最高分{max(mathlist)}')
print(f'英语最高分{max(englishlist)}')
print(f'语文最低分{min(chineselist)}')
print(f'数学最低分{min(mathlist)}')
print(f'英语最低分{min(englishlist)}')
        allyw=0
        allsx = 0
        allyy = 0

for num in chineselist:
            allyw+=num
for nums in mathlist:
            allsx += nums
for numss in englishlist:
            allyy += numss
print(f'语文平均分{int(allyw/len(chineselist))}')
print(f'数学最低分{int(allsx/len(mathlist))}')
print(f'英语最低分{int(allyy/len(englishlist))}')
        ywzgfname = ""
        sxzgfname = ""
        yyzgfname = ""
        ywzdfname = ""
        sxzdfname = ""
        yyzdfname = ""
for names in arr:
if (arr[names]["语文"] == max(chineselist)):
                ywzgfname += names + ","
if (arr[names]["数学"] == max(mathlist)):
                sxzgfname += names + ","
if (arr[names]["语文"] == max(englishlist)):
                yyzgfname += names + ","
if (arr[names]["语文"] == min(chineselist)):
                ywzdfname += names + ","
if (arr[names]["数学"] == min(mathlist)):
                sxzdfname += names + ","
if (arr[names]["英语"] == min(englishlist)):
                yyzdfname += names + ","

print(f"语文最高分学生{ywzgfname}")
print(f"数学最高分学生{sxzgfname}")
print(f"英语最高分学生{yyzgfname}")
print(f"语文最低分学生{ywzdfname}")
print(f"数学最低分学生{sxzdfname}")
print(f"英语最低分学生{yyzdfname}")

elif caozuo == "退出系统":
break

上面的练习都会做了就代表数据容器和流程控制语句知识过关了~

接下来讲面向对象,学过java的肯定知道面向对象三要素:封装,继承,多态

1.对象:一个拥有属性和行为的个体

如人的属性:姓名、性别、年龄...... ,

2.面向对象:一种以对象为中心,去思考和组织代码的方式,好处::可扩展性强,『切菜员』能给我做菜,也能给别人做菜;能做简单的菜,也能做复杂的菜。在程序中也是这个道理:我们定义的“对象”,可以被复用,多个对象之间还可以协作,一起组成更大的系统。

3.类:描述一类事物的模板,有属性和行为

4.实例:根据类创建出来的一个具体的对象又称实例,也可称为实例对象。

类的定义:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
 __init__方法又叫:初始化方法,它主要用来给当前实例对象添加属性。
 __init__方法收到的参数是:当前正在创建的实例对象、其他自定义参数。

创建实例

实例名 = 类名(参数1, 参数2, ...)
p1= Person("欣欣",29)

查看属性,修改属性,查看实例,也可以在创建完实例后追加属性值

#查看属性
print(p1.name)
p1.name="小美女"
#修改属性
print(p1.name)
#查看全部实例
print(p1.__dict__)
p1.address="武汉"
print(p1.__dict__)

可以自定义方法

def speek():
print("巴拉巴拉")
p1.speak=speek
print(p1.speak)#<function speek at 0x00000222E3D23EC0>
print(p1.__dict__)
{'name': '小美女', 'age': 29, 'address': '武汉', 'speak': <function speek at 0x00000222E3D23EC0>}
p1.speak()巴拉巴拉

上面讲的是实例属性,接下来是类属性,用于存放公共数据

class Person:
    maxAge=30

进行实例.属性名 = xxx操作时,只会对实例自身的属性起作用(有则修改,无则添加)!

实例方法调用:类里面的方法通过实例调用

class Person:
    maxAge=30
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def info(self):
print(f'{self.name}年龄{self.age}')
p1= Person("欣欣",29)
#查看属性
print(p1.name)
p1.name="小美女"
p2=Person("璐璐",27)
p1.info()
p2.info()        

当一个函数被定义在类中时,它就被称为方法。

使用@classmethod装饰器修饰,第一个参数是类本身,通常用形参cls接收。

类方法返回一个实例对象,可以通过类调用,也可以通过实例调用

@classmethod
    def create(cls,value):
        name=value
        age=1
return cls(name,age)
p4=Person.create("月月")
print(p4.__dict__){'name': '月月', 'age': 1}

p4=p1.create("地球"){'name': '地球', 'age': 1}
print(p4.__dict__)

静态方法

使用@staticmethod装饰器修饰,方法没有self或cls参数,只是单纯的定义在类中。

  1. 可通过『类名』或『实例名』调用,但强烈推荐通过类名调用以体现语义。

  2. 由于没有self或cls参数,所以静态方法中通常:不访问类属性,也不访问实例属性。

  3. 一般用于:定义与类相关,但可以独立使用的工具方法。

 @staticmethod
    def show(card):
return card
res=p4.show("1233")
print(res)

继承:指一个类可以继承父类的方法

class Person:
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

    def speak(self, msg):
print(f'我叫{self.name}, 年龄是{self.age}, 性别是{self.gender},我想说:{msg}')
#定义子类
class Student(Person):
    def __init__(self,name,age,gender,stu_id,grade):
        super().__init__(name,age,gender)
        self.stu_id=stu_id
        self.grade=grade

s1=Student("李易峰",39,'男',1,1)
print(s1.__dict__)


可以对方法进行重写

class Person:
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

    def speak(self, msg):
print(f'我叫{self.name}, 年龄是{self.age}, 性别是{self.gender},我想说:{msg}')
#定义子类
class Student(Person):
    def __init__(self,name,age,gender,stu_id,grade):
        super().__init__(name,age,gender)
        self.stu_id=stu_id
        self.grade=grade
    def speak(self, msg):
print(msg)

s1=Student("李易峰",39,'男',1,1)
print(s1.__dict__)
s1.speak("123")

isinstance() 和 issubclass() isinstance(instance, Class),作用:判断某个对象是否为指定类或其子类的实例

s1=Student("李易峰",39,'男',1,1)
s2=Person("123",11,'12')
print(s1.__dict__)
s1.speak("123")
print(isinstance(s1,Student))
print(isinstance(s1,Person))
print(isinstance(s2,Student))
print(isinstance(s2,Person))

方法2:issubclass(Class1, Class2),作用:判断某个类是否是另一个类的子类

print(issubclass(Student, Person))
print(issubclass(Person, Student))

多重继承:1个类可以继承多个父类

class Person:
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender

    def speak(self, msg):
print(f'我叫{self.name}, 年龄是{self.age}, 性别是{self.gender},我想说:{msg}')


class Worker:
    def __init__(self, company):
        self.company = company

    def show(self, msg):
print("worker", msg)

    def show1(self, msg):
print("worker1", msg)


class Student(Person, Worker):
    def __init__(self, name, age, gender, company, stu_id, grade):
        Person.__init__(self, name, age, gender)
        Worker.__init__(self, company)
        self.stu_id = stu_id
        self.grade = grade

    def speak(self, msg):
print(msg)
    def show(self,msg):
print("你是睡",msg)

s1=Student("李易峰",12,'男','欢瑞',1,1)
s1.show("123")
s1.speak("1")
s1.show1("123")
w1=Worker("12333")
w1.show1(1)
w1.show("1233")

权限控制

公有属性:在类外部,子类都可以访问

受保护属性:_属性名 在类外部,子类都可以访问

私有属性:__属性名 只能在类内部能访问

getter和setter同java中的一样,不再赘述

多态:

不同对象调用同一方法时候有不同的行为

class Animal:
    def speak(self):
print("动物正在发出声音")
class Dog(Animal):
    def speak(self):
print("汪汪汪")
class Cat(Animal):
    def speak(self):
print("喵喵喵")
def make_sound(animal:Animal):
    animal.speak()
a1=Animal()
d1=Dog()
c1=Cat()
make_sound(a1)
make_sound(d1)
make_sound(c1)

练习 采用面向对象的编程思想,开发一个购物车管理系统,实现商品信息的添加、修改、删除、查询功能。系统使用自定义对象存储商品数据,通过控制台菜单与用户交互。 具体功能如下: 1. 添加购物车:用户根据提示录入商品名称、以及该商品的价格、数量,保存该商品信息到购物车。 2. 修改购物车:要求用户输入要修改的购物车商品名称,然后再提示输入该商品的价格、数量,输入完成后修改该商品信息。 3. 删除购物车:要求用户输入要删除的购物车名称,根据名称删除购物车中的商品。 4. 查询购物车:将购物车中的商品信息展示出来,格式为:"商品名称: xxx, 商品价格: xxx, 商品数量: xxx"。 5. 退出购物车

# 采用面向对象的编程思想,开发一个购物车管理系统,实现商品信息的添加、修改、删除、查询功能。系统使用自定义对象存储商品数据,通过控制台菜单与用户交互。
# 具体功能如下:
#     1. 添加购物车:用户根据提示录入商品名称、以及该商品的价格、数量,保存该商品信息到购物车。
#     2. 修改购物车:要求用户输入要修改的购物车商品名称,然后再提示输入该商品的价格、数量,输入完成后修改该商品信息。
#     3. 删除购物车:要求用户输入要删除的购物车名称,根据名称删除购物车中的商品。
#     4. 查询购物车:将购物车中的商品信息展示出来,格式为:"商品名称: xxx, 商品价格: xxx, 商品数量: xxx"。
#     5. 退出购物车
class Shop:
    def __init__(self, id, name, price, num):
        self.id = id
        self.name = name
        self.price = price
        self.num = num


class Manager:
    def __init__(self):
        self.list = []

    def add(self):
        id = input("请输入编号")
        name = input("请输入名称")
        price = input("请输入价格")
        num = input("请输入数量")
        s = Shop(id, name, price, num)
        self.list.append(s)

    def update(self):
        id = input("请输入编号")
for s in self.list:
if (s.id == id):
                name = input("请输入名称")
                price = input("请输入价格")
                num = input("请输入数量")
                s.name = name
                s.price = price
                s.num = num

    def show(self):
for s in self.list:
print(s.name, s.price, s.num)

    def remove(self):
        id = input("请输入编号")
for s in self.list:
if (s.id == id):
                self.list.remove(s)

    def run(self):
while True:
print("购物车管理")
print(" 1. 添加购物车:用户根据提示录入商品名称、以及该商品的价格、数量,保存该商品信息到购物车。")
print(
" 2. 修改购物车:要求用户输入要修改的购物车商品名称,然后再提示输入该商品的价格、数量,输入完成后修改该商品信息。")
print(" 3. 删除购物车:要求用户输入要删除的购物车名称,根据名称删除购物车中的商品。")
print(" 4. 查询购物车:将购物车中的商品信息展示出来,格式为:商品名称: xxx, 商品价格: xxx, 商品数量: xxx")
print("  5. 退出购物车)")
            choice = input("请选择")
print(choice)
if choice == '1':
                self.add()
if choice == '2':
                self.update()
if choice == '3':
                self.remove()
if choice == '4':
                self.show()
if choice == '5':
break


m1 = Manager()
m1.run()

基础篇到i这里就完结了,明天开始更新进阶篇
接下来会更新四个商城项目,接入AI和支付,商城写到了订单,各位稍安勿躁,再等等
需要了解服务器和域名的购买以及返佣政策的可以找我,我有朋友做这方面对这些比较了解。
需要源码联系
需要源码可以加群,第一个是微信群,第二个是QQ群
微信群
QQ群

最新文章

随机文章