当前位置: 首页 > news >正文

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}")

这段代码做了以下几件事情:

  1. 使用 while True 创建了一个无限循环,这意味着代码会一直运行,直到遇到 break 语句。

  2. 使用 try 块尝试将用户的输入转换为整数。如果输入不是一个有效的整数,int() 函数会抛出一个 ValueError 异常。

  3. 如果没有异常发生,代码会检查整数是否在0到8的范围内。如果不在,会打印一条消息并继续循环。

  4. 如果输入的整数在范围内,break 语句会结束循环。

  5. 如果输入不是整数,except 块会捕获 ValueError 并打印一条错误消息,然后继续循环。

这样,只有当用户输入了一个有效的整数时,程序才会继续执行。

在Python中,如果你想在字符串中插入变量的值,而不是将变量名作为字符串的一部分打印出来,你需要使用格式化字符串。有几种方法可以做到这一点:

  1. 使用 % 操作符(旧式字符串格式化):

    python

    user_input = 5  # 假设这是之前获取的有效输入
    print("您选择的操作是:%d" % user_input)
  2. 使用 .format() 方法(新式字符串格式化):

    python

    user_input = 5  # 假设这是之前获取的有效输入
    print("您选择的操作是:{}".format(user_input))
  3. 使用 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中的一个函数定义。

让我来详细解释一下:

  1. def 是Python中的关键字,用于定义一个函数。

  2. print_menu 是函数的名称。在Python中,函数名通常使用小写字母和下划线来分隔单词,以提高可读性。

  3. () 表示这个函数不接受任何参数。如果函数需要接受参数,可以在括号内添加参数名称。

  4. : 表示函数定义的开始。在Python中,函数体必须缩进,以表示属于这个函数。

所以,def print_menu(): 表示定义了一个名为 print_menu 的函数,它不接受任何参数。

要将张三和李四的成绩存储到学生成绩管理系统中,你可以手动将这些数据添加到全局字典 student_grades

# 全局字典,存储学生成绩,键是学生名字,值是成绩列表
student_grades = {"张三": [95],"李四": [27]
}
total_scores = []
min_score = float('inf')  # 初始化最低分为无穷大
max_score = float('-inf')  # 初始化最高分为无穷小

这部分代码初始化了三个变量:

  1. total_scores:这是一个空列表,用于存储所有学生的成绩,以便后续计算总分和平均分。

  2. min_score:这是一个变量,用于存储所有学生成绩中的最低分。float('inf') 表示无穷大,这是一个特殊的浮点数值,用来确保任何实际的成绩都会比这个初始值小,从而在后续的比较中能够正确地更新最低分。

  3. 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]
  1. 循环中并没有进行计算总分,而是遍历数据找到下面代码所需求的

  2. student_grades.values():这部分调用了字典的 .values() 方法,它返回一个包含字典所有值(在这里是学生的成绩列表)的视图对象。

  3. for scores in student_grades.values():这是一个外层循环,它遍历 student_grades 字典中的每个学生的成绩列表。在每次迭代中,scores 变量包含了一个学生的成绩列表。

  4. for score in scores:这是一个内层循环,它遍历外层循环中得到的每个成绩列表 scores。在每次迭代中,score 变量包含了一个具体的成绩值。

  5. score:这是列表推导式中要收集的元素。对于内层循环的每次迭代,它将当前的成绩值添加到新列表中。

在Python中,try 关键字用于引入一个异常处理块,它允许程序在执行代码时发生错误(异常)的情况下捕获并处理这些错误,而不是让程序崩溃。

try 语句的基本结构如下:

python复制

try:# 尝试执行的代码块pass
except ExceptionType:# 如果在try块中抛出了ExceptionType类型的异常,则执行这里的代码pass
  1. TypeError

    • TypeError 异常是在类型不兼容的操作发生时抛出的。例如,当你尝试将一个整数和一个字符串相加,或者调用一个不支持的类型的方法时,就会抛出 TypeError

    • 例子:

      python

      number = 10
      try:result = number + "5"  # 尝试将整数和字符串相加
      except TypeError:print("TypeError: 无法将整数和字符串相加")
  2. ValueError

    • ValueError 异常是在传入一个值,而该值与期望的值不匹配时抛出的。例如,当你尝试将一个非数字字符串转换为整数或浮点数,或者当你传递了一个不适合的参数给某些函数时,就会抛出 ValueError

    • 例子:

      python复制

      value = "hello"
      try:number = int(value)  # 尝试将非数字字符串转换为整数
      except ValueError:print("ValueError: 无法将字符串转换为整数")
 # 学生存在,插入成绩到现有列表student_grades[name].append(score)
# 学生不存在,创建新的学生条目student_grades[name] = [score]
  1. for name, scores in student_grades.items():

    • 这是一个 for 循环,它遍历 student_grades 字典中的每个键值对(即每个学生的成绩)。

    • .items() 方法返回一个包含字典中所有键值对的视图对象,其中每个键值对是一个元组,第一个元素是键(学生姓名),第二个元素是值(学生的成绩列表)。

    • 在每次迭代中,name 变量会被赋值为当前学生的姓名,scores 变量会被赋值为当前学生的成绩列表。

  2. scores_str = ', '.join(map(str, scores))

    • map(str, scores) 是一个 map 函数,它将 scores 列表中的每个元素(成绩)转换为字符串类型。

    • map 函数返回一个迭代器,它包含转换后的所有字符串。

    • ', '.join(...) 是一个字符串方法,它将迭代器中的所有字符串连接成一个单独的字符串,每个字符串之间用逗号和空格分隔。

    • 例如,如果 scores[97, 85, 90],那么 scores_str 将会是 "97, 85, 90"

相关文章:

python基础之学生成绩管理系统

声明&#xff1a;学习视频来自b站up主 泷羽sec&#xff0c;如涉及侵权马上删除文章 声明&#xff1a;本文主要用作技术分享&#xff0c;所有内容仅供参考。任何使用或依赖于本文信息所造成的法律后果均与本人无关。请读者自行判断风险&#xff0c;并遵循相关法律法规。 while…...

SQL Server Management Studio 的JDBC驱动程序和IDEA 连接

一、数据库准备 &#xff08;一&#xff09;启用 TCP/IP 协议 操作入口 首先&#xff0c;我们要找到 SQL Server 配置管理器&#xff0c;操作路径为&#xff1a;通过 “此电脑” 右键选择 “管理”&#xff0c;在弹出的 “计算机管理” 窗口中&#xff0c;找到 “服务和应用程…...

大数据挖掘期末复习

大数据挖掘 数据挖掘 数据挖掘定义 技术层面&#xff1a; 数据挖掘就是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中&#xff0c;提取隐含在其中、人们事先不知道的、但又潜在有用的信息的过程。 数据准备环节 数据选择 质量分析 数据预处理 数据仓库 …...

凸函数与深度学习调参

问题1&#xff1a;如何区分凸问题和凹问题&#xff1f; 问题2&#xff1a;深度学习如何区分调参&#xff1f;...

Java前端基础——CSS

一、CSS介绍 1.1 什么是CSS CSS(Cascading Style Sheet)&#xff0c;层叠样式表,用于控制页面的样式. CSS 能够对网页中元素位置的排版进行像素级精确控制, 实现美化页面的效果. 能够做到页面的样式和结构分离. 1.2 基本语法规范 选择器 {⼀条/N条声明} • 选择器决定针…...

Photino:通过.NET Core构建跨平台桌面应用程序,.net国产系统

一、Photino.NET简介&#xff1a; 最近发现了一个不错的框架 Photino.Net 一份代码运行&#xff0c;三个平台 windows max linux &#xff0c;其中windows10,windows11,ubuntu 18.04,ubuntu 20.04 已测试均可以。mac 因为没有相关电脑没有测试。 github:https://github.com/t…...

个人全栈开发微信小程序上线了(记日记)

个人开发的全栈项目&#xff0c;《每日记鸭》微信小程序上线了&#xff01; 主要是技术栈&#xff1a;uniapp,koa2,mongodb,langchian&#xff1b; 感兴趣的小伙伴可以来捧捧场&#xff01;...

Linux移植IMX6ULL记录 一:编译源码并支持能顺利进入linux

目录 前言 一、不修改文件进行编译 二、修改设备树文件进行编译 前言 我用的开发板是100_ask_imx6ull_pro&#xff0c;其自带的linux内核版本linux-4.9.88&#xff0c;然后从linux官网下载过来的linux-4.9.88版本的arch/arm/configs/defconfig和dts设备树文件并没有对imx6ull…...

idea正则表达式-正则替换示例-2024.11笔记

注意idea中反向引用的格式是【$1】换行符是【\n】 需要在如下的代码中往接口的方法中添加一行注解&#xff0c;注解需要用到以后注解的中文备注 原文 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的使用

如果要在安卓应用中操作相机&#xff0c;有三个库可以选&#xff1a; Camera&#xff08;已废弃&#xff09;&#xff1a;Camera是安卓最早的包&#xff0c;目前已废弃&#xff0c;在Android 5.0&#xff08;API 级别 21&#xff09;的设备上操作相机可以选择该包&#xff0c;…...

unity3d——基础篇小项目(开始界面)

示例代码&#xff1a; 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&#xff08;系数&#xff09;作用1.…...

安卓手机root+magisk安装证书+抓取https请求

先讲一下有这篇文章的背景吧&#xff0c;在使用安卓手机fiddler抓包时&#xff0c;即使信任了证书&#xff0c;并且手机也安装了证书&#xff0c;但是还是无法捕获https请求的问题&#xff0c;最开始不知道原因&#xff0c;后来慢慢了解到现在有的app为了防止抓包&#xff0c;把…...

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 首先这篇文章有个地方我其实没太明白&#xff0c;它在title和行文的时候都写的是“ hybrid parallel-series resonator mode-…...

【软考】系统架构设计师-信息安全技术基础

信息安全核心知识点 信息安全5要素&#xff1a;机密性、完整性、可用性、可控性、审查性 信息安全范围&#xff1a;设备安全、数据安全、内容安全、行为安全 网络安全 网络安全的隐患体现在&#xff1a;物理安全性、软件安全漏洞、不兼容使用安全漏洞、选择合适的安全哲理 …...

kali搭建pikachu靶场

前言&#xff1a; 总所周知搭个网站需要有apachemysqlphp&#xff0c;Apache是一个开源的Web服务器软件&#xff0c; MySQL是一种关系型数据库管理系统&#xff08;数据库&#xff09;&#xff0c;PHP是一种在服务器上执行的脚本语言 文章内容来自&#xff1a;【黑帽编程与攻…...

注解用于从 HTTP 请求中提取数据

在 Spring 框架中&#xff0c;PathVariable、RequestParam 和 RequestBody 等注解用于从 HTTP 请求中提取数据。具体来说&#xff1a; PathVariable&#xff1a;用于从 URL 路径中提取变量值。例如&#xff0c;在路径 /users/{id} 中&#xff0c;{id} 是一个路径变量。Request…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观&#xff0c;可持续性好高效率高复用&#xff0c;可移植性好高内聚&#xff0c;低耦合没有冗余规范性&#xff0c;代码有规可循&#xff0c;可以看出自己当时的思考过程特殊排版&#xff0c;特殊语法&#xff0c;特殊指令&#xff0c;必须…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库&#xff0c;提供了高效、安全的文本格式化功能&#xff0c;是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...

redis和redission的区别

Redis 和 Redisson 是两个密切相关但又本质不同的技术&#xff0c;它们扮演着完全不同的角色&#xff1a; Redis: 内存数据库/数据结构存储 本质&#xff1a; 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能&#xff1a; 提供丰…...

Python环境安装与虚拟环境配置详解

本文档旨在为Python开发者提供一站式的环境安装与虚拟环境配置指南&#xff0c;适用于Windows、macOS和Linux系统。无论你是初学者还是有经验的开发者&#xff0c;都能在此找到适合自己的环境搭建方法和常见问题的解决方案。 快速开始 一分钟快速安装与虚拟环境配置 # macOS/…...

CppCon 2015 学习:Reactive Stream Processing in Industrial IoT using DDS and Rx

“Reactive Stream Processing in Industrial IoT using DDS and Rx” 是指在工业物联网&#xff08;IIoT&#xff09;场景中&#xff0c;结合 DDS&#xff08;Data Distribution Service&#xff09; 和 Rx&#xff08;Reactive Extensions&#xff09; 技术&#xff0c;实现 …...

背包问题双雄:01 背包与完全背包详解(Java 实现)

一、背包问题概述 背包问题是动态规划领域的经典问题&#xff0c;其核心在于如何在有限容量的背包中选择物品&#xff0c;使得总价值最大化。根据物品选择规则的不同&#xff0c;主要分为两类&#xff1a; 01 背包&#xff1a;每件物品最多选 1 次&#xff08;选或不选&#…...