python基础之学生成绩管理系统
声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章
声明:本文主要用作技术分享,所有内容仅供参考。任何使用或依赖于本文信息所造成的法律后果均与本人无关。请读者自行判断风险,并遵循相关法律法规。
while True:
try:user_input = int(input("请选择您的操作 (0-8): "))if 0 <= user_input <= 8:breakelse:print("输入的数字不在范围内,请输入0到8之间的整数。")except ValueError:print("无效的输入,请输入一个整数。") # 现在 user_input 包含了一个有效的整数,你可以继续你的程序逻辑 print(f"您选择的操作是: {user_input}")
这段代码做了以下几件事情:
-
使用
while True
创建了一个无限循环,这意味着代码会一直运行,直到遇到break
语句。 -
使用
try
块尝试将用户的输入转换为整数。如果输入不是一个有效的整数,int()
函数会抛出一个ValueError
异常。 -
如果没有异常发生,代码会检查整数是否在0到8的范围内。如果不在,会打印一条消息并继续循环。
-
如果输入的整数在范围内,
break
语句会结束循环。 -
如果输入不是整数,
except
块会捕获ValueError
并打印一条错误消息,然后继续循环。
这样,只有当用户输入了一个有效的整数时,程序才会继续执行。
在Python中,如果你想在字符串中插入变量的值,而不是将变量名作为字符串的一部分打印出来,你需要使用格式化字符串。有几种方法可以做到这一点:
-
使用
%
操作符(旧式字符串格式化):python
user_input = 5 # 假设这是之前获取的有效输入 print("您选择的操作是:%d" % user_input)
-
使用
.format()
方法(新式字符串格式化):python
user_input = 5 # 假设这是之前获取的有效输入 print("您选择的操作是:{}".format(user_input))
-
使用 f-string(Python 3.6+):
python
user_input = 5 # 假设这是之前获取的有效输入 print(f"您选择的操作是:{user_input}")
f-string 是最现代和最简洁的方法,它允许你直接在字符串中嵌入表达式。上面的任何一个方法都可以让你将变量 user_input
的值插入到字符串中,而不是将其作为字符串 "user_input" 打印出来。
%s
是另一个格式说明符,用于字符串,而 %d
是用于整数
如果你想要在选择操作后直接回到原页面,而不是打印额外的信息,你可以将打印菜单的代码封装到一个函数中,并在每次循环时调用这个函数。这样,当用户选择操作0(退出管理系统)时,程序会退出循环,而不会再次打印菜单。下面是修改后的代码:
python
def print_menu():print("*****************************************")print("-----------欢迎使用学生成绩管理系统-----------")print(" * 【1】输入学生成绩 * ")print(" * 【2】显示统计数据 * ")print(" * 【3】查找学生成绩 * ")print(" * 【4】修改学生成绩 * ")print(" * 【5】删除学生成绩 * ")print(" * 【6】插入学生成绩 * ")print(" * 【7】按平均分排列 * ")print(" * 【8】显示学生成绩 * ")print(" * 【0】退出管理系统 * ")print("*****************************************") while True:print_menu() # 调用函数打印菜单try:user_input = int(input("请选择您的操作 (0-8):"))if user_input >= 0 and user_input <= 8:breakelse:print("输入的数字不在范围内,请输入0-8之间的整数")except ValueError:print("无效的输入,请输入一个整数") print(f"您选择的操作是:{user_input}") if user_input == 0:print("感谢使用学生成绩管理系统,再见!") else:# 这里可以添加对应 user_input 的操作代码pass
在这个代码中,print_menu
函数包含了打印菜单的所有 print
语句。在 while
循环中,每次循环都会调用 print_menu
函数来显示菜单。当用户输入0时,程序会退出循环,并打印退出信息。如果用户输入了其他操作,程序会继续执行,而不会再次打印菜单。这样,用户选择退出后,程序会直接结束,而不会再次打印菜单。
def print_menu():
是Python中的一个函数定义。
让我来详细解释一下:
-
def
是Python中的关键字,用于定义一个函数。 -
print_menu
是函数的名称。在Python中,函数名通常使用小写字母和下划线来分隔单词,以提高可读性。 -
()
表示这个函数不接受任何参数。如果函数需要接受参数,可以在括号内添加参数名称。 -
:
表示函数定义的开始。在Python中,函数体必须缩进,以表示属于这个函数。
所以,def print_menu():
表示定义了一个名为 print_menu
的函数,它不接受任何参数。
要将张三和李四的成绩存储到学生成绩管理系统中,你可以手动将这些数据添加到全局字典 student_grades
中
# 全局字典,存储学生成绩,键是学生名字,值是成绩列表 student_grades = {"张三": [95],"李四": [27] }
total_scores = [] min_score = float('inf') # 初始化最低分为无穷大 max_score = float('-inf') # 初始化最高分为无穷小
这部分代码初始化了三个变量:
-
total_scores
:这是一个空列表,用于存储所有学生的成绩,以便后续计算总分和平均分。 -
min_score
:这是一个变量,用于存储所有学生成绩中的最低分。float('inf')
表示无穷大,这是一个特殊的浮点数值,用来确保任何实际的成绩都会比这个初始值小,从而在后续的比较中能够正确地更新最低分。 -
max_score
:这是一个变量,用于存储所有学生成绩中的最高分。float('-inf')
表示负无穷大,这是一个特殊的浮点数值,用来确保任何实际的成绩都会比这个初始值大,从而在后续的比较中能够正确地更新最高分。total_scores = [score for scores in student_grades.values() for score in scores] # 将所有成绩添加到总分列表中min_score = min(min_score, *scores) # 更新最低分max_score = max(max_score, *scores) # 更新最高分
这部分代码做了以下几件事情:
-
for scores in student_grades.values()
:这个循环遍历student_grades
字典中的所有值(即每个学生的成绩列表)。.values()
方法返回字典中所有值的视图,这里的值就是每个学生的成绩列表。 -
total_scores.extend(scores)
:extend
方法用于将一个列表中的所有元素添加到另一个列表的末尾。这里,它将每个学生的成绩列表中的所有成绩添加到total_scores
列表中。 -
min_score = min(min_score, *scores)
:这行代码使用min
函数来更新min_score
的值。*scores
是一个解包操作,它将scores
列表中的所有元素作为独立的参数传递给min
函数。这样,min_score
就会被设置为当前min_score
和当前学生成绩列表中的最低成绩之间的最小值。 -
max_score = max(max_score, *scores)
:这行代码使用max
函数来更新max_score
的值。同样,*scores
是一个解包操作,它将scores
列表中的所有元素作为独立的参数传递给max
函数。这样,max_score
就会被设置为当前max_score
和当前学生成绩列表中的最高成绩之间的最大值。
-
total_scores = [score for scores in student_grades.values() for score in scores]
-
循环中并没有进行计算总分,而是遍历数据找到下面代码所需求的
-
student_grades.values()
:这部分调用了字典的.values()
方法,它返回一个包含字典所有值(在这里是学生的成绩列表)的视图对象。 -
for scores in student_grades.values()
:这是一个外层循环,它遍历student_grades
字典中的每个学生的成绩列表。在每次迭代中,scores
变量包含了一个学生的成绩列表。 -
for score in scores
:这是一个内层循环,它遍历外层循环中得到的每个成绩列表scores
。在每次迭代中,score
变量包含了一个具体的成绩值。 -
score
:这是列表推导式中要收集的元素。对于内层循环的每次迭代,它将当前的成绩值添加到新列表中。
在Python中,try
关键字用于引入一个异常处理块,它允许程序在执行代码时发生错误(异常)的情况下捕获并处理这些错误,而不是让程序崩溃。
try
语句的基本结构如下:
python复制
try:# 尝试执行的代码块pass except ExceptionType:# 如果在try块中抛出了ExceptionType类型的异常,则执行这里的代码pass
-
TypeError
:-
TypeError
异常是在类型不兼容的操作发生时抛出的。例如,当你尝试将一个整数和一个字符串相加,或者调用一个不支持的类型的方法时,就会抛出TypeError
。 -
例子:
python
number = 10 try:result = number + "5" # 尝试将整数和字符串相加 except TypeError:print("TypeError: 无法将整数和字符串相加")
-
-
ValueError
:-
ValueError
异常是在传入一个值,而该值与期望的值不匹配时抛出的。例如,当你尝试将一个非数字字符串转换为整数或浮点数,或者当你传递了一个不适合的参数给某些函数时,就会抛出ValueError
。 -
例子:
python复制
value = "hello" try:number = int(value) # 尝试将非数字字符串转换为整数 except ValueError:print("ValueError: 无法将字符串转换为整数")
-
# 学生存在,插入成绩到现有列表student_grades[name].append(score)
# 学生不存在,创建新的学生条目student_grades[name] = [score]
-
for name, scores in student_grades.items():
-
这是一个
for
循环,它遍历student_grades
字典中的每个键值对(即每个学生的成绩)。 -
.items()
方法返回一个包含字典中所有键值对的视图对象,其中每个键值对是一个元组,第一个元素是键(学生姓名),第二个元素是值(学生的成绩列表)。 -
在每次迭代中,
name
变量会被赋值为当前学生的姓名,scores
变量会被赋值为当前学生的成绩列表。
-
-
scores_str = ', '.join(map(str, scores))
:-
map(str, scores)
是一个map
函数,它将scores
列表中的每个元素(成绩)转换为字符串类型。 -
map
函数返回一个迭代器,它包含转换后的所有字符串。 -
', '.join(...)
是一个字符串方法,它将迭代器中的所有字符串连接成一个单独的字符串,每个字符串之间用逗号和空格分隔。 -
例如,如果
scores
是[97, 85, 90]
,那么scores_str
将会是"97, 85, 90"
。
-
相关文章:
python基础之学生成绩管理系统
声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章 声明:本文主要用作技术分享,所有内容仅供参考。任何使用或依赖于本文信息所造成的法律后果均与本人无关。请读者自行判断风险,并遵循相关法律法规。 while…...
SQL Server Management Studio 的JDBC驱动程序和IDEA 连接
一、数据库准备 (一)启用 TCP/IP 协议 操作入口 首先,我们要找到 SQL Server 配置管理器,操作路径为:通过 “此电脑” 右键选择 “管理”,在弹出的 “计算机管理” 窗口中,找到 “服务和应用程…...
大数据挖掘期末复习
大数据挖掘 数据挖掘 数据挖掘定义 技术层面: 数据挖掘就是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中、人们事先不知道的、但又潜在有用的信息的过程。 数据准备环节 数据选择 质量分析 数据预处理 数据仓库 …...
凸函数与深度学习调参
问题1:如何区分凸问题和凹问题? 问题2:深度学习如何区分调参?...
Java前端基础——CSS
一、CSS介绍 1.1 什么是CSS CSS(Cascading Style Sheet),层叠样式表,用于控制页面的样式. CSS 能够对网页中元素位置的排版进行像素级精确控制, 实现美化页面的效果. 能够做到页面的样式和结构分离. 1.2 基本语法规范 选择器 {⼀条/N条声明} • 选择器决定针…...
Photino:通过.NET Core构建跨平台桌面应用程序,.net国产系统
一、Photino.NET简介: 最近发现了一个不错的框架 Photino.Net 一份代码运行,三个平台 windows max linux ,其中windows10,windows11,ubuntu 18.04,ubuntu 20.04 已测试均可以。mac 因为没有相关电脑没有测试。 github:https://github.com/t…...
个人全栈开发微信小程序上线了(记日记)
个人开发的全栈项目,《每日记鸭》微信小程序上线了! 主要是技术栈:uniapp,koa2,mongodb,langchian; 感兴趣的小伙伴可以来捧捧场!...
Linux移植IMX6ULL记录 一:编译源码并支持能顺利进入linux
目录 前言 一、不修改文件进行编译 二、修改设备树文件进行编译 前言 我用的开发板是100_ask_imx6ull_pro,其自带的linux内核版本linux-4.9.88,然后从linux官网下载过来的linux-4.9.88版本的arch/arm/configs/defconfig和dts设备树文件并没有对imx6ull…...
idea正则表达式-正则替换示例-2024.11笔记
注意idea中反向引用的格式是【$1】换行符是【\n】 需要在如下的代码中往接口的方法中添加一行注解,注解需要用到以后注解的中文备注 原文 Autowired private WomanService womanService; /** * 自定义分页 */ PostMapping("/page/{current}/{…...
Github 2024-11-20C开源项目日报 Top9
根据Github Trendings的统计,今日(2024-11-20统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量C项目9Assembly项目1raylib: 用于视频游戏编程的简单易用图形库 创建周期:3821 天开发语言:C协议类型:zlib LicenseStar数量:18556 个Fork数…...
安卓CameraX的使用
如果要在安卓应用中操作相机,有三个库可以选: Camera(已废弃):Camera是安卓最早的包,目前已废弃,在Android 5.0(API 级别 21)的设备上操作相机可以选择该包,…...
unity3d——基础篇小项目(开始界面)
示例代码: using System.Collections; using System.Collections.Generic; using UnityEngine;public class BeginPanel : BasePanel<BeginPanel> {public UIButton btnBegin;public UIButton btnRank;public UIButton btnSetting;public UIButton btnQuit; …...
【YOLOv8】安卓端部署-1-项目介绍
【YOLOv8】安卓端部署-1-项目介绍 1 什么是YOLOv81.1 YOLOv8 的主要特性1.2 YOLOv8分割模型1.2.1 YOLACT实例分割算法之计算掩码1.2.1.1 YOLACT 的掩码原型与最终的掩码的关系1.2.1.2 插值时的目标检测中提取的物体特征1.2.1.3 coefficients(系数)作用1.…...
安卓手机root+magisk安装证书+抓取https请求
先讲一下有这篇文章的背景吧,在使用安卓手机fiddler抓包时,即使信任了证书,并且手机也安装了证书,但是还是无法捕获https请求的问题,最开始不知道原因,后来慢慢了解到现在有的app为了防止抓包,把…...
11.20 深度学习-pytorch包和属性的基础语法
import torch import numpy as np def sci_close(): # 关闭pytorch 数据打印出来时科学计数法 torch.set_printoptions(sci_modeFalse) pass return 0 def create_tensor(): # 创建张量 t1torch.tensor(5) # 一阶张量 阶数看你传入的矩阵是多少阶的 这个是标量 不是一阶 一阶…...
SpringMVC域对象共享数据
目录 一.向 request 域对象共享数据 1.1使用ServletAPI向request域对象共享数据 1.2使用ModelAndView向request域对象共享数据 1.3使用Model向request域对象共享数据 1.4使用map向request域对象共享数据 1.5使用ModelMap向request域对象共享数据 二.Model、ModelMap、Ma…...
每日论文23-24ESSERC 6.4-16.1Ghz混合并联-串联谐振器
《A 6.4-to-16.1GHz Hybrid Parallel-Series Resonator Mode-Switching Oscillator with 206.6dBc/Hz FoMT at 1MHz Offset in 40nm CMOS》 24ESSERC 首先这篇文章有个地方我其实没太明白,它在title和行文的时候都写的是“ hybrid parallel-series resonator mode-…...
【软考】系统架构设计师-信息安全技术基础
信息安全核心知识点 信息安全5要素:机密性、完整性、可用性、可控性、审查性 信息安全范围:设备安全、数据安全、内容安全、行为安全 网络安全 网络安全的隐患体现在:物理安全性、软件安全漏洞、不兼容使用安全漏洞、选择合适的安全哲理 …...
kali搭建pikachu靶场
前言: 总所周知搭个网站需要有apachemysqlphp,Apache是一个开源的Web服务器软件, MySQL是一种关系型数据库管理系统(数据库),PHP是一种在服务器上执行的脚本语言 文章内容来自:【黑帽编程与攻…...
注解用于从 HTTP 请求中提取数据
在 Spring 框架中,PathVariable、RequestParam 和 RequestBody 等注解用于从 HTTP 请求中提取数据。具体来说: PathVariable:用于从 URL 路径中提取变量值。例如,在路径 /users/{id} 中,{id} 是一个路径变量。Request…...
(Linux)搭建静态网站——基于http/https协议的静态网站
简单了解nginx配置文件 1.下载并开启nginx服务 下载 [rootlocalhost ~]# dnf install nginx -y开启 [rootlocalhost ~]# systemctl restart nginx 1.(1)搭建静态网站——基于http协议的静态网站 实验1:搭建一个web服务器,访问该服务器时显示“hello w…...
【机器学习chp3】判别式分类器:线性判别函数、线性分类器、广义线性分类器、分段线性分类器
前言: 本文遗留问题:(1)对最小平方误差分类器的理解不清晰.(2)分段线性判别函数的局部训练法理解不清晰。 推荐文章1,其中有关于感知机的分析 【王木头从感知机到神经网络】-CSDN博客 推荐文…...
【学习】【HTML】HTML、XML、XHTML
HTML 什么是 HTML? HTML (HyperText Markup Language) 是一种用于创建和展示网页的标准标记语言。它由一系列的元素组成,这些元素通过标签的形式来告诉浏览器如何显示内容。 HTML 的基本结构是什么? <!DOCTYPE html> <html> …...
ARM中ZI-data段和RW-data段
ARM中ZI-data段和RW-data段 1、只定义全局变量,不使用,不占用内存空间2、 定义并初始化全局变量为0 占用ZI-Data区域3、定义并初始化全局变量非0 占用RW-Data区域4、增加的是一个int8的数据为什么,size增加不是15、定义的全局变量为0…...
关联度分析、灰色预测GM(1,1)、GM(1,1)残差模型——基于Python实现
关联度分析 import numpy as np import pandas as pd #关联度分析 #参考序列 Y_0[170,174,197,216.4,235.8] #被比较序列 Y_1[195.4,189.9,187.2,205,222.7] Y_2[308,310,295,346,367]#初始化序列 X_0np.array(Y_0)/Y_0[0] X_1np.array(Y_1)/Y_1[0] X_2np.array(Y_2)/Y_2[0]#计…...
linux常用命令(网络相关)
目录 1. ping - 检查网络连通性 参数 示例 2. ifconfig - 配置网络接口 参数 示例 3. ip - 显示和操作路由、网络设备、接口等 参数 示例 4. netstat - 显示网络连接、路由表、接口统计等信息 参数 示例 5. ss - 更快的netstat替代品 参数 示例 6. nslookup - …...
【uni-app多端】修复stmopjs下plus-websocket无心跳的问题
从这篇文章接着向下看: uniapp plus-websocket 和stompjs连接教程 安卓ios手机端有效 - 简书 按照文章的方式,能够实现APP下stmopjs长连接。但是有一个问题,就是会频繁输出 res-创建连接-1- 跟踪连接,会发现连接都会在大约40s后…...
VScode学习前端-01
小问题合集: vscode按!有时候没反应,有时候出来,是因为------>必须在英文状态下输入! 把鼠标放在函数、变量等上面,会自动弹出提示,但挡住视线,有点不习惯。 打开file->pre…...
Java-05 深入浅出 MyBatis - 配置深入 动态 SQL 参数、循环、片段
点一下关注吧!!!非常感谢!!持续更新!!! 大数据篇正在更新!https://blog.csdn.net/w776341482/category_12713819.html 目前已经更新到了: MyBatisÿ…...
突破自动驾驶瓶颈!KoMA:多智能体与大模型的完美融合
0.简介 本推文主要介绍了由来自北京航空航天大学的姜克谋、蔡轩和崔智勇教授等共同提出的一种名为KoMA的知识驱动的多智能体框架。论文《KoMA: Knowledge-driven Multi-agent Framework for Autonomous Driving with Large Language Models》提出了KoMA框架,通过结…...
网站做数学题/网络的推广方式有哪些
dp概念:在整个数组或在固定大小的滑动窗口中找到总和或最大值或最小值的问题可以通过动态规划(DP)在线性时间内解决 题目: 给定一个无序的整数数组,找到其中最长上升子序列的长度。 示例: 输入: [10,9,2,5,3,7,101,18…...
北京外语网站开发公司/北京做百度推广的公司
来源 | https://zhuanlan.zhihu.com/p/42968117作者 | catcat999提醒 | 本文已获得作者授权发布,如需转载请与作者联系。人脸关键点人脸关键点检测是人脸识别和分析领域中的关键一步,它是诸如自动人脸识别、表情分析、三维人脸重建及三维动画等其它人脸…...
广州网站开发公司排名/太原网站seo
UrlRewriter 是微软封装好了的一个URL重写组件。使用它可以让我节约很多自已开发的时间。 好了,开始讲述我的应用经验,这只是很菜鸟的经验,高手就不用看了。 第一步,请从此下载此组件。解压,把UrlRewriter.dll copy到…...
网站开发组合 所有组合/网站推广的内容
写在前面 本学习教程所有示例代码见GitHub:https://github.com/selfconzrr/Redis_Learning 为什么要关闭连接? 比如下面一段代码: for(int i 2000; i < 3000; i) {Jedis jedis redisDao.getJedis();jedis.set("user:" i, j…...
常用的网站类型有哪些类型有哪些类型/策划方案怎么做
extra主要有是那种情况:Using index、Using filesort、Using temporary、Using whereUsing where无需多说,就是使用了where筛选条件。数据准备:CREATE TABLE t_blog (id int(11) NOT NULL auto_increment,title varchar(50) default NULL,typ…...
福田莲花北网站建设/个人博客网页设计
1. 悲观锁与乐观锁我们都知道,cpu是时分复用的,也就是把cpu的时间片,分配给不同的thread/process轮流执行,时间片与时间片之间,需要进行cpu切换,也就是会发生进程的切换。切换涉及到清空寄存器,…...