Loading... > 这篇文章当时就没写完,等我空了再完善 ## 0_Make_a_Manage_System 本文中,我们将实现一个学生成绩管理小程序,具体要求如下: 1. 学生成绩的录入 2. 学生成绩的查询 3. 学生成绩的修改 4. 使用格式化输出结果,使界面美观 5. 有一定的防呆设计 预期效果如下:  以上是本文我们需要实现的功能,接下来我们将通过学习逐步实现这些功能。 ## 1_Score_list 在上面的动图中我们发现学生的成绩不止一科,那么我们是怎么做到存放学生成绩的呢?肯定不是简单的使用字符串或者变量,这样既减慢了运行速度,也加大了编程难度。那么我们在这里需要用到一个新的数据类型——`list列表` 列表是 Python 中最基本的数据结构。列表中的每个值都有对应的`位置值`,称之为`索引`,**第一个索引是 `0`**,第二个索引是 `1`,依此类推。列表是最常用的 Python 数据类型,它可以作为一个方括号内的逗号分隔值出现。列表的数据项**`不需要`具有相同的类型**。 创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示: ```python list1 = ['Google', 'Baidu', 1997, 2000] list2 = [1, 2, 3, 4, 5 ] list3 = ["a", "b", "c", "d"] list4 = ['red', 'green', 'blue', 'yellow', 'white', 'black'] ``` ### ①Visit_member 与字符串的索引一样,列表索引从 `0` 开始,第二个索引是 `1`,依此类推。通过索引列表可以进行截取、组合等操作。  索引也可以从`尾部开始`,最后一个元素的索引为 `-1`,往前一位为 `-2`,以此类推。  下面是使用实例: ```python list = ['red', 'green', 'blue', 'yellow', 'white', 'black'] #从头调用 print( list[0] ) print( list[1] ) print( list[2] ) #从后调用 print( list[-1] ) print( list[-2] ) print( list[-3] ) #从头调用的结果 >>>red >>>green >>>blue #从后调用的结果 >>>black >>>white >>>yellow ``` 使用下标索引来访问列表中的值,同样也可以使用`方括号 []`的形式截取字符,如下所示:  ```python nums = [10, 20, 30, 40, 50, 60, 70, 80, 90] print(nums[0:4]) >>>[10, 20, 30, 40] #同样的,截取字符也可采用反向索引 print(nums[1:-3]) >>>[20,30,40,50,60] ``` ### ②Update_list 我们可以对列表的数据项进行修改或更新,也可以使用 `append()` 方法来**添加列表项**,如下所示: ```python list = ['Google', 'Bing', 1997, 2000] print ("第三个元素为 : ", list[2]) list[2] = 2001 print ("更新后的第三个元素为 : ", list[2]) list1 = ['Google', 'Bing', 'Taobao'] list1.append('Baidu') print ("更新后的列表 : ", list1) >>>第三个元素为 : 1997 >>>更新后的第三个元素为 : 2001 >>>更新后的列表 : ['Google', 'Bing', 'Taobao', 'Baidu'] ``` ### ③Delete_member ```python list = ['Google', 'Bing', 1997, 2000] print ("原始列表 : ", list) >>>原始列表 : ['Google', 'Bing', 1997, 2000] del list[2] print ("删除第三个元素 : ", list) >>>删除第三个元素 : ['Google', 'Bing', 2000] ``` ## 2_Suck_my_Dict Python中字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值 `key=>value` 对用`冒号 :` 分割,每个对之间用`逗号(,)`分割,整个字典包括在`花括号 {} `中 ,格式如下所示: ```python dict = {key1 : value1, key2 : value2, key3 : value3 } ```  `键(Key)`必须是唯一的,但`值(value)`则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字。一个简单的字典实例: ```python dict = {'name': 'MrDeng', 'num': 123, 'url': 'pic.mrdeng.cn'} ``` ### ①Visit_ur_Dict 把相应的键放入到方括号中,如下实例: ```python dict = {'Name': 'MrDeng', 'Num': 123, 'Class': 'First'} print ("dict['Name']: ", dict['Name']) print ("dict['Num']: ", dict['Num']) >>>dict['Name']: MrDeng >>>dict['Num']: 123 ``` 如果用字典里没有的键访问数据,会输出错误如下: ```python dict = {'Name': 'MrDeng', 'Num': 123, 'Class': 'First'} print ("dict['Alice']: ", dict['Alice']) #将会出现报错 Traceback (most recent call last): File "test.py", line 5, in <module> print ("dict['Alice']: ", dict['Alice']) KeyError: 'Alice' ``` ### ②Edit_ur_Dict 向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例: ```python dict = {'Name': 'MrDeng', 'Num': 123, 'Class': 'First'} dict['Num'] = 456 # 更新 Age dict['School'] = "CDUT" # 添加信息 print ("dict['Num']: ", dict['Num']) print ("dict['School']: ", dict['School']) >>>dict['Num']: 456 >>>dict['School']: CDUT ``` 字典的删除操作能删除单一的元素也能清空字典甚至删除整个字典。这些操作都需要用del命令,如下实例: ```python dict = {'Name': 'MrDeng', 'Num': 123, 'Class': 'First'} del dict['Name'] # 删除键 'Name' print(dict) >>>{'Num': 123, 'Class': 'First'} dict.clear() # 清空字典 print(dict) >>> del dict # 删除字典 print(dict) >>>Traceback (most recent call last): File "test.py", line 9, in <module> print ("dict['Age']: ", dict['Age']) TypeError: 'type' object is not subscriptable ``` ### ③Some_Future 字典`值(value)`可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但`键(key)`不行。两个重要的点需要记住: 1. 不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住; 2. 键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行。 具体见下方实例: ```python dict = {'Name': 'MrDeng', 'Age': 7, 'Name': '鄧先森'} print ("dict['Name']: ", dict['Name']) >>>鄧先森 dict = {['Name']: 'MrDeng', 'Age': 7} print ("dict['Name']: ", dict['Name']) >>>Traceback (most recent call last): File "test.py", line 3, in <module> dict = {['Name']: 'Runoob', 'Age': 7} TypeError: unhashable type: 'list' ``` ## 3_Student_Form 通过上面的学习,我们基本了解了`列表 list`和`字典 dict`的性质和使用方法,那么接下来我们将试着构建一个学生信息表。信息表结构如下: **学生信息** - 语文成绩 - 数学成绩 - 外语成绩 也就是说我们首先需要用`字典 dict`以学生姓名为`键 key`,成绩为`值 value`,来存放信息。由于有多个成绩,所以成绩部分我们使用`列表 list`进行嵌套。如下: ```python {"张三":[98,76,86]} ``` 最后修改:2024 年 09 月 23 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏