From 55b9778e356a4ea38c9519528a82a035e084d181 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E9=82=B9?= <1640765309@qq.com> Date: Thu, 25 Jun 2026 21:14:50 +0800 Subject: [PATCH] zy --- ...0260520 Python\350\257\255\350\250\200.md" | 87 +++++++++++ ...60\346\215\256\347\261\273\345\236\213.md" | 67 ++++++++ ...57\344\270\216\345\276\252\347\216\257.md" | 117 ++++++++++++++ ...60\346\215\256\347\273\223\346\236\204.md" | 122 +++++++++++++++ .../20260528\345\207\275\346\225\260.md" | 24 +++ ...42\345\220\221\345\257\271\350\261\241.md" | 146 ++++++++++++++++++ ...56\345\272\223\345\237\272\347\241\200.md" | 37 +++++ ...0260610 pandas\346\225\260\346\215\256.md" | 27 ++++ ...24\347\224\250\345\274\200\345\217\221.md" | 108 +++++++++++++ ...73\345\275\225\347\231\273\345\207\272.md" | 36 +++++ ...56\345\272\223\351\223\276\346\216\245.md" | 43 ++++++ ...64\345\220\210\346\225\260\346\215\256.md" | 87 +++++++++++ 12 files changed, 901 insertions(+) create mode 100644 "45 \351\202\271\346\254\243\351\234\217/20260520 Python\350\257\255\350\250\200.md" create mode 100644 "45 \351\202\271\346\254\243\351\234\217/20260521 \345\237\272\347\241\200\346\225\260\346\215\256\347\261\273\345\236\213.md" create mode 100644 "45 \351\202\271\346\254\243\351\234\217/20260526\345\210\206\346\224\257\344\270\216\345\276\252\347\216\257.md" create mode 100644 "45 \351\202\271\346\254\243\351\234\217/20260527 \345\270\270\347\224\250\346\225\260\346\215\256\347\273\223\346\236\204.md" create mode 100644 "45 \351\202\271\346\254\243\351\234\217/20260528\345\207\275\346\225\260.md" create mode 100644 "45 \351\202\271\346\254\243\351\234\217/20260602\351\235\242\345\220\221\345\257\271\350\261\241.md" create mode 100644 "45 \351\202\271\346\254\243\351\234\217/20260609 SQLite\346\225\260\346\215\256\345\272\223\345\237\272\347\241\200.md" create mode 100644 "45 \351\202\271\346\254\243\351\234\217/20260610 pandas\346\225\260\346\215\256.md" create mode 100644 "45 \351\202\271\346\254\243\351\234\217/20260611 Streamlit\345\272\224\347\224\250\345\274\200\345\217\221.md" create mode 100644 "45 \351\202\271\346\254\243\351\234\217/20260616\347\231\273\345\275\225\347\231\273\345\207\272.md" create mode 100644 "45 \351\202\271\346\254\243\351\234\217/20260617\346\225\260\346\215\256\345\272\223\351\223\276\346\216\245.md" create mode 100644 "45 \351\202\271\346\254\243\351\234\217/20260618\346\225\264\345\220\210\346\225\260\346\215\256.md" diff --git "a/45 \351\202\271\346\254\243\351\234\217/20260520 Python\350\257\255\350\250\200.md" "b/45 \351\202\271\346\254\243\351\234\217/20260520 Python\350\257\255\350\250\200.md" new file mode 100644 index 00000000..4881fe1d --- /dev/null +++ "b/45 \351\202\271\346\254\243\351\234\217/20260520 Python\350\257\255\350\250\200.md" @@ -0,0 +1,87 @@ +# 20260520 Python语言 + +Python 是一种**解释**型语言,意味着开发过程中不需要编译环节。 + +保存 Python 代码的文件扩展名通常是 **.py**。 + +在 PyCharm 中运行程序,实际上是调用了系统中的**Python 解释器**来执行代码。 + +Python 内置函数 **print ()** 用于将内容输出到控制台。 + + + +### 1. `python hello.py` 这条命令做了什么? + +这条命令的作用是:**告诉操作系统,调用 Python 解释器,去读取并执行 `hello.py` 这个代码文件里的 Python 代码** + +### 2. PyCharm 和 Python 解释器有什么区别?它们如何配合工作? + +#### 区别 + +- **Python 解释器**:是**真正运行代码的程序**,没有它,Python 代码一行都执行不了;它是核心运行工具。 +- **PyCharm**:是**代码编辑器 + 开发工具**,用来写代码、改代码、管理项目;它本身不能运行代码,只是一个 “工作台”。 + +#### 配合工作方式 + +1. 你在 PyCharm 里写好 `.py` 代码; +2. 点击运行时,PyCharm 会**自动调用系统里的 Python 解释器**; +3. 解释器读取代码并执行; +4. 执行结果返回到 PyCharm 的控制台展示给你。 + +```cmd +C:\Users\Administrator>python --version +Python 3.13.3 + +C:\Users\Administrator>pip --version +pip 25.0.1 from C:\Users\Administrator\AppData\Local\Programs\Python\Python313\Lib\site-packages\pip (python 3.13) +``` + +```python +print('hello,python') +print('我的第一个Python程序') +``` + +![image-20260520101447089](https://gitee.com/guo-sitian116/picture/raw/master/pic/upgit_20260520_1779245969.png) + +```python +print('我的姓名') +print('我是软件技术3班的') +print('掌握Python编程基础与应用开发') +``` + +![image-20260520102218649](https://gitee.com/guo-sitian116/picture/raw/master/pic/upgit_20260520_1779245973.png) + +```python +print('课程名称:Python编程基础与应用开发') +print('开发工具:PyCharm') +print('Python版本:3.12.x') +print('本节主题:Python语言概述与开发环境') +``` + +![image-20260520102510971](https://gitee.com/guo-sitian116/picture/raw/master/pic/upgit_20260520_1779245978.png) + +```python +print('==============================') +print('张三') +print('专业:软件技术') +print('爱好:编程、羽毛球') +print('==============================') +``` + +![image-20260520102731412](https://gitee.com/guo-sitian116/picture/raw/master/pic/upgit_20260520_1779245983.png) + +```python +print('=========================================') +print(' 课程信息展示程序') +print('=========================================') +print('课程名称:Python编程基础与应用开发') +print('使用语言:Python') +print('开发工具:PyCharm') +print('学习内容:基础语法、文件处理、SQLite、pandas、Streamlit') +print('学习目标:能够使用Python完成基础应用开发') +print('=========================================') +``` + +![image-20260520103153752](https://gitee.com/guo-sitian116/picture/raw/master/pic/upgit_20260520_1779245987.png) + + \ No newline at end of file diff --git "a/45 \351\202\271\346\254\243\351\234\217/20260521 \345\237\272\347\241\200\346\225\260\346\215\256\347\261\273\345\236\213.md" "b/45 \351\202\271\346\254\243\351\234\217/20260521 \345\237\272\347\241\200\346\225\260\346\215\256\347\261\273\345\236\213.md" new file mode 100644 index 00000000..2ac3f722 --- /dev/null +++ "b/45 \351\202\271\346\254\243\351\234\217/20260521 \345\237\272\347\241\200\346\225\260\346\215\256\347\261\273\345\236\213.md" @@ -0,0 +1,67 @@ +``` +# ### A组:基础必做 +# +# 1. 输入姓名和年龄,输出“某某今年多少岁”。 +# 2. 输入两个整数,输出它们的和、差、积、商。 +# 3. 输入商品单价和数量,输出总价。 +age = input("请输入你的年龄:") +name = input("请输入你的姓名:") +print(f"{name}今年:{age}岁") + +num1 = input("请输入第一个整数:") +num2 = input("请输入第二个整数:") +he = int(num1) + int(num2) +cha = int(num1) - int(num2) +product = int(num1) * int(num2) +quotient = int(num1) / int(num2) +print(f"它的和为{he},差为{cha},积为{product},商为{quotient}") + + + +``` + +![image-20260525195207117](https://gitee.com/guo-sitian116/picture/raw/master/pic/upgit_20260525_1779710010.png) + +``` +# +# ### B组:巩固提升 +# +# 1. 输入三门课程成绩,输出总分和平均分。 +# 2. 输入圆的半径,计算圆面积,圆周率取 `3.14`。 +# 3. 输入身高和体重,计算 BMI。 +c1 = float(input('语')) +c2 = float(input('数')) +c3 = float(input('英')) +print(f'平均分为{(c1+c2+c3)/3:.2f}') +r=float(input('圆半径')) +print(f'圆面积为{3.14*r**2}') +sheng=float(input('输入身高(m)')) +zhong=float(input('输入体重(kg)')) +print(f'{zhong/sheng**2:.2f}') + + + +``` + +![2026-05-21_211149](https://gitee.com/li-chenxi114514/image-hosting/raw/master/pic/upgit_20260521_1779369438.png) + +``` +# ### C组:拓展训练 +# +# 1. 输入本金、年利率、年数,计算简单利息。 +# 2. 输入商品原价和折扣,计算折后价格。 +# 3. 输入总秒数,转换为小时、分钟、秒。 +ben=float(input('输入本金')) +li=float(input('输入年利率')) +shu=float(input('输入年数')) +print(f'利息为{ben*(li/100)*shu:.2f}') + +yuanjia=float(input('商品原价')) +zhekou=float(input('折扣(输入小数)')) +print(f'折后价格{yuanjia*zhekou}') + +zong=int(input('总秒数')) +print(f'{zong//3600}小时{(zong%3600)//60}分{zong%60}秒') +``` + +![2026-05-21_211320](https://gitee.com/li-chenxi114514/image-hosting/raw/master/pic/upgit_20260521_1779369440.png) \ No newline at end of file diff --git "a/45 \351\202\271\346\254\243\351\234\217/20260526\345\210\206\346\224\257\344\270\216\345\276\252\347\216\257.md" "b/45 \351\202\271\346\254\243\351\234\217/20260526\345\210\206\346\224\257\344\270\216\345\276\252\347\216\257.md" new file mode 100644 index 00000000..25936bcd --- /dev/null +++ "b/45 \351\202\271\346\254\243\351\234\217/20260526\345\210\206\346\224\257\344\270\216\345\276\252\347\216\257.md" @@ -0,0 +1,117 @@ +# 20260526作业 + +```python +# ### A组:基础必做 +# +# 1. 输入一个成绩,判断是否及格。 +# score = int(input('请输入你的成绩:')) +# if score < 60: +# print("不及格") +# else: +# print("及格了") +# +# # 2. 输出 1 到 100 的所有整数。 +# for i in range(1, 101): +# print(i) + +# 3. 计算 1 到 100 的累加和。 +# total = 0 +# for c in range(1, 101): +# total = total + c +# print(f"1到100的累加和是:{total}") + +# 4. 输出 1 到 100 中所有偶数。 +# for d in range(1, 101): +# if d % 2 == 0: +# print(d) + + +# ### B组:巩固提升 +# +# 1. 输入成绩,输出等级:优秀、良好、及格、不及格。 +# score = int(input('请输入你的成绩:')) +# if score >= 90: +# print("成绩优秀") +# elif score >= 70: +# print("成绩良好") +# elif score >=60: +# print("成绩及格") +# else: +# print("成绩不及格") + +# 2. 输出九九乘法表。 +# for i in range(1,10): +# for j in range(1,i+1): +# print(i*j) + + +# 3. 输入一个整数,判断是否为质数。 +# d = 0 +# num = int(input('输入一个整数:')) +# for i in range(2, num): +# if num % i == 0: +# print(f"{num}不是质数") +# d +=1 +# break +# if d==0: +# print(f"{num}是质数") + +# 4. 输入 5 个成绩,输出平均分。 +num1 = int(input('请输入第一个数:')) +num2 = int(input('请输入第二个数:')) +num3 = int(input('请输入第三个数:')) +num4 = int(input('请输入第四个数:')) +num5 = int(input('请输入第五个数:')) + +avg = (num1 + num2 + num3 + num4 + num5) / 5 +print("平均分是:", avg) + +# ### C组:拓展训练 +# +# 1. 编写带次数限制的登录验证程序。 +count = 0 +while count < 3: + username = input("请输入用户名:") + password = input("请输入密码:") + if username == "admin" and password == "123456": + print("登录成功!") + break + else: + count += 1 + print(f"账号或密码错误,还剩 {3-count} 次机会") +else: + print("次数用完,登录失败") +# 2. 编写猜数字游戏,统计用户猜测次数。 +import random +secret = random.randint(1, 100) +count = 0 + +while True: + guess = int(input("请猜一个1~100之间的数字:")) + count += 1 + if guess > secret: + print("猜大了") + elif guess < secret: + print("猜小了") + else: + print(f"恭喜猜对!一共猜了 {count} 次") + break +# 3. 输入若干成绩,以 `-1` 结束,输出最高分、最低分和平均分。 +scores = [] +while True: + s = int(input("请输入成绩,输入-1结束:")) + if s == -1: + break + scores.append(s) + +if scores: + max_score = max(scores) + min_score = min(scores) + avg_score = sum(scores) / len(scores) + print(f"最高分:{max_score}") + print(f"最低分:{min_score}") + print(f"平均分:{avg_score}") +else: + print("没有输入成绩") + +``` \ No newline at end of file diff --git "a/45 \351\202\271\346\254\243\351\234\217/20260527 \345\270\270\347\224\250\346\225\260\346\215\256\347\273\223\346\236\204.md" "b/45 \351\202\271\346\254\243\351\234\217/20260527 \345\270\270\347\224\250\346\225\260\346\215\256\347\273\223\346\236\204.md" new file mode 100644 index 00000000..33eac922 --- /dev/null +++ "b/45 \351\202\271\346\254\243\351\234\217/20260527 \345\270\270\347\224\250\346\225\260\346\215\256\347\273\223\346\236\204.md" @@ -0,0 +1,122 @@ +# 20260527 + +```python +# ### A组:基础必做 +# +# 1. 创建列表保存 5 个学生姓名并遍历输出。 +# names = ["张三", '李四', '程度', '夏雨', '夏雪'] +# print(names) +# names.append('剩下') +# print(names) +# names.insert(2, 1) +# print(names) +# names.pop(2) +# print(names) +# for name in names: +# print(name) + +# 2. 创建字典保存一个学生的姓名、年龄、成绩。 +# student = { +# "name": "李四", +# "age": 19, +# "score": 92 +# } +# print(student) +# print(student["name"]) +# student["class_name"] = "一班" +# print(student) + +# 3. 创建集合去除重复课程名称。 +# S1 = {1,2,3,4,5,6,6,6} +# print(S1) + +# 4. 统计列表中元素个数。 +# c=(1,2,3,4,5,6,7,8,9) +# print(len(c)) +# ### B组:巩固提升 +# +# 1. 使用列表保存 5 个成绩,计算平均分。 +score1 = float(input('请输入成绩:')) +score2 = float(input('请输入成绩:')) +score3 = float(input('请输入成绩:')) +score4 = float(input('请输入成绩:')) +score5 = float(input('请输入成绩:')) +avg=(score1+score2+score3+score4+score5)/5 +print(avg) + +# 2. 使用字典保存商品信息,并计算折后价格。 +# 商品字典:名称-原价 +goods = {"手机": 3999, "耳机": 299, "平板": 1999} +discount = 0.8 # 八折 + +for name, price in goods.items(): + new_price = price * discount + print(f"{name} 原价:{price},折后价:{new_price:.2f}") + +# 3. 使用列表嵌套字典保存 3 个学生信息并输出。 +students = [ + {"name": "张三", "age": 18, "score": 88}, + {"name": "李四", "age": 19, "score": 95}, + {"name": "王五", "age": 18, "score": 79} +] + +for s in students: + print(s) + + +# 4. 查找最高分学生。 +students = [ + {"name": "张三", "age": 18, "score": 88}, + {"name": "李四", "age": 19, "score": 95}, + {"name": "王五", "age": 18, "score": 79} +] +# 找出最高分 +max_stu = max(students, key=lambda x: x["score"]) +print(f"最高分学生:{max_stu['name']},分数:{max_stu['score']}") + + +# ### C组:拓展训练 +# +# 1. 实现通讯录添加和查询功能。 +contacts = {} + +while True: + print("\n1.添加联系人 2.查询联系人 3.退出") + choice = input("请选择功能:") + if choice == "1": + name = input("输入姓名:") + phone = input("输入手机号:") + contacts[name] = phone + print("添加成功") + elif choice == "2": + name = input("输入要查询的姓名:") + if name in contacts: + print(f"手机号:{contacts[name]}") + else: + print("查无此人") + elif choice == "3": + break + else: + print("输入错误") + + +# 2. 实现购物车总价计算。 +cart = { + "牛奶": 4.5, + "面包": 6.8, + "可乐": 3.0 +} + +total = sum(cart.values()) +print("购物车所有商品总价:", total) + + +# 3. 统计字符串中每个字符出现次数。 +s = input("请输入一串字符:") +count_dict = {} + +for char in s: + count_dict[char] = count_dict.get(char, 0) + 1 + +print("字符统计结果:", count_dict) +``` \ No newline at end of file diff --git "a/45 \351\202\271\346\254\243\351\234\217/20260528\345\207\275\346\225\260.md" "b/45 \351\202\271\346\254\243\351\234\217/20260528\345\207\275\346\225\260.md" new file mode 100644 index 00000000..7aabfdb1 --- /dev/null +++ "b/45 \351\202\271\346\254\243\351\234\217/20260528\345\207\275\346\225\260.md" @@ -0,0 +1,24 @@ +```python +# 1.录入10位评委打分 +score_list = [] +for i in range(10): + s = float(input(f"请输入第{i+1}位评委打分:")) + score_list.append(s) + +# 2.去掉最高、最低分 +score_list.remove(max(score_list)) +score_list.remove(min(score_list)) + +# 3.计算平均分 +avg = sum(score_list)/len(score_list) +print(f"选手最终得分:{avg:.2f}") +scores = [92,88,95,79,90,85,87,91,83,89] +scores.remove(max(scores)) +scores.remove(min(scores)) +average = sum(scores)/len(scores) +print(f"平均分:{average:.2f}") +scores.sort() # 从小到大排序 +new_scores = scores[1:-1] # 切掉第0位(最低)和最后一位(最高) +avg = sum(new_scores)/len(new_scores) +``` + diff --git "a/45 \351\202\271\346\254\243\351\234\217/20260602\351\235\242\345\220\221\345\257\271\350\261\241.md" "b/45 \351\202\271\346\254\243\351\234\217/20260602\351\235\242\345\220\221\345\257\271\350\261\241.md" new file mode 100644 index 00000000..af77592b --- /dev/null +++ "b/45 \351\202\271\346\254\243\351\234\217/20260602\351\235\242\345\220\221\345\257\271\350\261\241.md" @@ -0,0 +1,146 @@ +# 20260602面向对象 + +```python +### A组:基础必做 +# +# 1. 定义一个 `Dog` 类,包含 `name` 和 `age` 两个属性。 +class Dog: + def __init__(self,name,age): + self.name = name + self.age = age + +# 2. 定义一个 `show_info()` 方法输出狗的信息。 + + def show_info(self): + print(f"这只小狗的名字是{self.name},今年{self.age}岁了") +dog1 = Dog("小黑",2) +dog1.show_info() + +# 3. 创建两个狗对象并输出信息。 +dog2 = Dog("小白",4) +dog2.show_info() +# 4. 定义 `Circle` 类,包含半径属性,添加计算面积的方法。 +class Circle: + def __init__(self,r): + self.r = r + def get_area(self): + reture math.pi*self.r**2 + +# ### B组:巩固提升 +# +# 1. 定义 `Product` 类,包含名称、价格、库存三个属性。 +# 2. 定义 `Book` 类,包含书名、作者、价格,添加 `show_info()` 方法。 +# 3. 定义 `Student` 类,增加 `is_passed()` 方法判断是否及格。 +# 4. 创建学生对象列表,计算全班平均分。 +# 1.Product商品类:名称、价格、库存 +class Product: + def __init__(self, name, price, stock): + self.name = name + self.price = price + self.stock = stock + +# 2.Book图书类:书名、作者、价格 + show_info() +class Book: + def __init__(self, book_name, author, price): + self.book_name = book_name + self.author = author + self.price = price + + def show_info(self): + print(f"书名:{self.book_name},作者:{self.author},售价:{self.price}元") + +# 3.Student学生类:分数 + is_passed()判断是否及格(≥60) +class Student: + def __init__(self, name, score): + self.name = name + self.score = score + + def is_passed(self): + return self.score >= 60 + +# 4.创建学生列表,计算全班平均分 +stu_list = [ + Student("张三", 88), + Student("李四", 59), + Student("王五", 92), + Student("赵六", 76) +] +# 求平均分 +total = sum(stu.score for stu in stu_list) +avg = total / len(stu_list) +print(f"全班平均分:{avg:.2f}") + +# 测试学生及格判断 +s1 = Student("小明",65) +print(s1.is_passed()) +# +# ### C组:拓展挑战 +# +# 1. 完成课堂案例中的银行账户类。 +# 2. 定义购物车类,支持添加商品和计算总价。 +# 3. 定义课程类,保存课程名称、教师、学分。 +# 1.银行账户类(存钱、取钱、查询余额) +class BankAccount: + def __init__(self, name, money=0): + self.name = name + self.balance = money + + def save_money(self, num): + # 存钱 + if num > 0: + self.balance += num + print(f"存入{num}元,当前余额:{self.balance}") + + def take_money(self, num): + # 取钱 + if 0 < num <= self.balance: + self.balance -= num + print(f"取出{num}元,当前余额:{self.balance}") + else: + print("余额不足或输入金额非法") + + def get_balance(self): + return self.balance + +# 2.购物车类:添加商品、计算总价 +class ShopCart: + def __init__(self): + self.goods = [] # 存储(商品名,单价,数量) + + def add_goods(self, name, price, count=1): + self.goods.append((name, price, count)) + + def get_total(self): + total = 0 + for name,p,c in self.goods: + total += p * c + return total + +# 3.课程类:课程名、授课老师、学分 +class Course: + def __init__(self, course_name, teacher, credit): + self.course_name = course_name + self.teacher = teacher + self.credit = credit + + def show_course(self): + print(f"课程:{self.course_name},授课老师:{self.teacher},学分:{self.credit}") + + +# =====测试代码===== +# 银行账户测试 +acc = BankAccount("老王",1000) +acc.save_money(500) +acc.take_money(300) + +# 购物车测试 +cart = ShopCart() +cart.add_goods("笔记本",5,2) +cart.add_goods("钢笔",12,1) +print("购物车总价:",cart.get_total()) + +# 课程测试 +c = Course("Python编程","张老师",4) +c.show_course() +``` + diff --git "a/45 \351\202\271\346\254\243\351\234\217/20260609 SQLite\346\225\260\346\215\256\345\272\223\345\237\272\347\241\200.md" "b/45 \351\202\271\346\254\243\351\234\217/20260609 SQLite\346\225\260\346\215\256\345\272\223\345\237\272\347\241\200.md" new file mode 100644 index 00000000..ce5822f3 --- /dev/null +++ "b/45 \351\202\271\346\254\243\351\234\217/20260609 SQLite\346\225\260\346\215\256\345\272\223\345\237\272\347\241\200.md" @@ -0,0 +1,37 @@ +```python +import sqlite3 +conn = sqlite3.connect('test.db') +conn.execute(""" + create table if not exists pets( + id integer primary key autoincrement, + name text, + age integer + ) +""") +conn.commit() +conn.close() +``` + +```python +conn.execute("INSERT INTO pets (name, age) VALUES (?, ?)",("旺财",3)) +``` + +1. 三引号 `"""..."""` 是用来写多行注释的。( × ) +2. 插入数据后不需要 `commit()` 也能保存。( × ) +3. `fetchall()` 返回的是一个列表。( √ ) +4. 单元素元组写成 `("张三")` 是正确的。( × ) + +```python +print("-"*27) +print(""" + 欢迎登陆学生管理系统 +""") +print("-"*27) + +pwd = input("请输入管理员密码:") +if pwd != '111222': + print("密码错误") +if pwd == '111222': + print('密码正确') +``` + diff --git "a/45 \351\202\271\346\254\243\351\234\217/20260610 pandas\346\225\260\346\215\256.md" "b/45 \351\202\271\346\254\243\351\234\217/20260610 pandas\346\225\260\346\215\256.md" new file mode 100644 index 00000000..e6302bc0 --- /dev/null +++ "b/45 \351\202\271\346\254\243\351\234\217/20260610 pandas\346\225\260\346\215\256.md" @@ -0,0 +1,27 @@ +```python +import pandas as pd + +# 按班级分组,统计平均分和最高分 +group_result = df.groupby("班级")["score"].agg(["mean", "max"]) +# 可以重命名列名 +group_result = group_result.rename(columns={"mean": "平均分", "max": "最高分"}) + +import pandas as pd + +# 1. 检查每列的缺失值数量 +missing_count = df.isnull().sum() + +# 2. 删除score列为空的行 +df = df.dropna(subset=["score"]) + +# 3. 用0填充其他缺失值 +df = df.fillna(0) + +import pandas as pd + +# 按班级分组,统计平均分和最高分 +group_result = df.groupby("班级")["score"].agg(["mean", "max"]) +# 可以重命名列名 +group_result = group_result.rename(columns={"mean": "平均分", "max": "最高分"}) +``` + diff --git "a/45 \351\202\271\346\254\243\351\234\217/20260611 Streamlit\345\272\224\347\224\250\345\274\200\345\217\221.md" "b/45 \351\202\271\346\254\243\351\234\217/20260611 Streamlit\345\272\224\347\224\250\345\274\200\345\217\221.md" new file mode 100644 index 00000000..2fa93b3d --- /dev/null +++ "b/45 \351\202\271\346\254\243\351\234\217/20260611 Streamlit\345\272\224\347\224\250\345\274\200\345\217\221.md" @@ -0,0 +1,108 @@ +```python +import streamlit as st + +# 1. 页面标题 +st.title("学生信息录入") + +# 2. 姓名输入框 +name = st.text_input("请输入学生姓名") + +# 3. 成绩输入框 +score = st.number_input("请输入学生成绩", min_value=0, max_value=100) + +# 4. 点击按钮展示内容 +if st.button("提交信息"): + st.write(f"学生姓名:{name}") + st.write(f"学生成绩:{score}") +``` + +```python +import streamlit as st +import pandas as pd +import matplotlib.pyplot as plt + +st.title("综合功能页面") + +# 1. BMI计算页面 +st.subheader("BMI计算器") +height = st.number_input("身高(m)", min_value=0.5, max_value=2.5) +weight = st.number_input("体重(kg)", min_value=10, max_value=300) +if st.button("计算BMI"): + bmi = weight / (height ** 2) + st.write(f"你的BMI值:{bmi:.2f}") + if bmi < 18.5: + st.info("偏瘦") + elif 18.5 <= bmi < 24: + st.success("正常") + elif 24 <= bmi < 28: + st.warning("超重") + else: + st.error("肥胖") + +# 2. 成绩等级判断 +st.subheader("成绩等级判断") +score_input = st.number_input("输入考试分数", min_value=0, max_value=100, key="score_b") +if st.button("判定等级"): + if score_input >= 90: + st.success("等级:A") + elif score_input >= 80: + st.success("等级:B") + elif score_input >= 60: + st.warning("等级:C") + else: + st.error("等级:D") + +# 3. DataFrame展示学生列表 +st.subheader("学生信息表") +student_df = pd.DataFrame([ + {"姓名":"张三","班级":"1班","成绩":86}, + {"姓名":"李四","班级":"1班","成绩":73}, + {"姓名":"王五","班级":"2班","成绩":92}, + {"姓名":"赵六","班级":"2班","成绩":58} +]) +st.dataframe(student_df) + +# 4. 柱状图展示成绩 +st.subheader("学生成绩柱状图") +fig, ax = plt.subplots() +ax.bar(student_df["姓名"], student_df["成绩"], color="#4285F4") +ax.set_ylabel("分数") +st.pyplot(fig) +``` + +```python +import streamlit as st +import pandas as pd + +st.title("学生数据统计工具") + +# 1. 上传CSV并预览 +upload_file = st.file_uploader("上传学生CSV文件", type="csv") +if upload_file is not None: + df = pd.read_csv(upload_file) + st.subheader("原始数据预览") + st.dataframe(df) + + # 2. 选择班级筛选数据 + class_list = df["班级"].unique() + select_class = st.selectbox("选择要查看的班级", class_list) + filter_df = df[df["班级"] == select_class] + st.subheader(f"{select_class} 筛选后数据") + st.dataframe(filter_df) + + # 3. 统计指标:平均分、最高分、学生人数 + avg_score = filter_df["成绩"].mean() + max_score = filter_df["成绩"].max() + student_count = len(filter_df) + + col1, col2, col3 = st.columns(3) + with col1: + st.metric("班级平均分", f"{avg_score:.1f}") + with col2: + st.metric("班级最高分", max_score) + with col3: + st.metric("班级总人数", student_count) +else: + st.info("请上传csv文件(需包含:姓名、班级、成绩三列)") +``` + diff --git "a/45 \351\202\271\346\254\243\351\234\217/20260616\347\231\273\345\275\225\347\231\273\345\207\272.md" "b/45 \351\202\271\346\254\243\351\234\217/20260616\347\231\273\345\275\225\347\231\273\345\207\272.md" new file mode 100644 index 00000000..beee373c --- /dev/null +++ "b/45 \351\202\271\346\254\243\351\234\217/20260616\347\231\273\345\275\225\347\231\273\345\207\272.md" @@ -0,0 +1,36 @@ +```python +import streamlit as st + +st.set_page_config(page_title="登录系统", page_icon="🔐") + +if 'log' not in st.session_state: + st.session_state.log = False +if 'name' not in st.session_state: + st.session_state.name = '' + +if not st.session_state.log: + st.title("=========图书管理系统=========") + st.subheader("用户登录") + + name = st.text_input("用户名") + password = st.text_input("密码", type="password") + + if st.button("登录"): + if name == "张三" and password == '123456': + st.session_state.log = True + st.session_state.name = name + st.success("✅ 登录成功!") + st.rerun() + else: + st.error("❌ 用户名或密码错误!") +else: + st.title("图书管理系统") + st.success(f"欢迎你,{st.session_state.name}!") + + # 退出按钮 + if st.button("退出登录"): + st.session_state.log = False + st.session_state.name = "" + st.rerun() +``` + diff --git "a/45 \351\202\271\346\254\243\351\234\217/20260617\346\225\260\346\215\256\345\272\223\351\223\276\346\216\245.md" "b/45 \351\202\271\346\254\243\351\234\217/20260617\346\225\260\346\215\256\345\272\223\351\223\276\346\216\245.md" new file mode 100644 index 00000000..577f4227 --- /dev/null +++ "b/45 \351\202\271\346\254\243\351\234\217/20260617\346\225\260\346\215\256\345\272\223\351\223\276\346\216\245.md" @@ -0,0 +1,43 @@ +```python +import streamlit as st + +st.set_page_config(page_title="登录系统", page_icon="🔐") + +if 'log' not in st.session_state: + st.session_state.log = False +if 'name' not in st.session_state: + st.session_state.name = '' + +if not st.session_state.log: + st.title("=========图书管理系统=========") + st.subheader("用户登录") + + name = st.text_input("用户名") + password = st.text_input("密码", type="password") + + if st.button("登录"): + if name == "张三" and password == '123456': + st.session_state.log = True + st.session_state.name = name + st.success("✅ 登录成功!") + st.rerun() + else: + st.error("❌ 用户名或密码错误!") +else: + st.title("图书管理系统") + st.success(f"欢迎你,{st.session_state.name}!") + + import sqlite3 + import pandas as pd + conn = sqlite3.connect('books.db') + data = conn.execute('select * from books').fetchall() + df = pd.DataFrame(data, columns=['id', 'name', 'author', 'number']) + print(df) + st.dataframe(df, use_column_width=True) + + # 退出按钮 + if st.button("退出登录"): + st.session_state.log = False + st.session_state.name = "" + st.rerun() +``` \ No newline at end of file diff --git "a/45 \351\202\271\346\254\243\351\234\217/20260618\346\225\264\345\220\210\346\225\260\346\215\256.md" "b/45 \351\202\271\346\254\243\351\234\217/20260618\346\225\264\345\220\210\346\225\260\346\215\256.md" new file mode 100644 index 00000000..73312c82 --- /dev/null +++ "b/45 \351\202\271\346\254\243\351\234\217/20260618\346\225\264\345\220\210\346\225\260\346\215\256.md" @@ -0,0 +1,87 @@ +```python +import streamlit as st +from streamlit import button +import sqlite3 as sq +st.set_page_config(page_title="登录系统") + +if "name" not in st.session_state: + st.session_state.name = "" +if "is_denglu" not in st.session_state: + st.session_state.is_denglu = False + + + +if not st.session_state.is_denglu: + st.title("图书管理系统") + st.subheader("用户登录") + + name = st.text_input("请输入姓名") + is_denglu = st.text_input("请输入密码",type="password") + if button("登录"): + if (is_denglu == "m123" and name == "张三") or (is_denglu == "m223" and name == "李四") or (is_denglu == "m323" and name == "王五"): + st.session_state.is_denglu = True + st.write("登录成功") + st.session_state.name = name + st.rerun() + + else: + st.error("登录失败!") +else: + st.write(f"{st.session_state.name},欢迎你登录图书管理系统!") +def get_all_books(): + Returns: + pandas.DataFrame: + conn = sqlite3.connect('library.db') + df = pd.read_sql_query( + "SELECT * FROM books ORDER BY id", + conn + ) + conn.close() + return df + + +def insert_sample_data(): + conn = sqlite3.connect('library.db') + count = conn.execute("SELECT COUNT(*) FROM books").fetchone()[0] + if count == 0: + sample_books = [ + ('三国演义', '罗贯中', 10), + ('红楼梦', '曹雪芹', 8), + ('西游记', '吴承恩', 5) + ] + + for title, author, quantity in sample_books: + conn.execute( + "INSERT INTO books (title, author, quantity) VALUES (?, ?, ?)", + (title, author, quantity) + ) + + print("✅ 示例数据插入成功") + conn.commit() + conn.close() + + +init_database() + + +if st.button("退出"): + st.session_state.is_denglu = False + st.session_state.name = "" + st.rerun() + st.info("敬请期待图书管理系统开发中!") + + +def init_database(): + conn = sqlite3.connect('library.db') + conn.execute(''' + CREATE TABLE IF NOT EXISTS books ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + title TEXT NOT NULL, + author TEXT NOT NULL, + quantity INTEGER DEFAULT 1 + ) + ''') + conn.commit() + conn.close() + print("✅ 数据库初始化完成") +``` \ No newline at end of file -- Gitee