这篇文章当时就没写完,等我空了再完善

0_Make_a_Manage_System

本文中,我们将实现一个学生成绩管理小程序,具体要求如下:

  1. 学生成绩的录入
  2. 学生成绩的查询
  3. 学生成绩的修改
  4. 使用格式化输出结果,使界面美观
  5. 有一定的防呆设计

预期效果如下:
gif7_1

以上是本文我们需要实现的功能,接下来我们将通过学习逐步实现这些功能。

1_Score_list

在上面的动图中我们发现学生的成绩不止一科,那么我们是怎么做到存放学生成绩的呢?肯定不是简单的使用字符串或者变量,这样既减慢了运行速度,也加大了编程难度。那么我们在这里需要用到一个新的数据类型——list列表

列表是 Python 中最基本的数据结构。列表中的每个值都有对应的位置值,称之为索引第一个索引是 0,第二个索引是 1,依此类推。列表是最常用的 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,依此类推。通过索引列表可以进行截取、组合等操作。
Pic7_1

索引也可以从尾部开始,最后一个元素的索引为 -1,往前一位为 -2,以此类推。
Pic7_2

下面是使用实例:

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

使用下标索引来访问列表中的值,同样也可以使用方括号 []的形式截取字符,如下所示:
Pic7_3

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() 方法来添加列表项,如下所示:

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

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 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示:

dict = {key1 : value1, key2 : value2, key3 : value3 }

pic1_1

键(Key)必须是唯一的,但值(value)则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字。一个简单的字典实例:

dict = {'name': 'MrDeng', 'num': 123, 'url': 'pic.mrdeng.cn'}

①Visit_ur_Dict

把相应的键放入到方括号中,如下实例:

dict = {'Name': 'MrDeng', 'Num': 123, 'Class': 'First'}
 
print ("dict['Name']: ", dict['Name'])
print ("dict['Num']: ", dict['Num'])

>>>dict['Name']: MrDeng
>>>dict['Num']: 123

如果用字典里没有的键访问数据,会输出错误如下:

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

向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:

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命令,如下实例:

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. 键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行。

具体见下方实例:

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进行嵌套。如下:

{"张三":[98,76,86]}
最后修改:2024 年 09 月 23 日
如果觉得我的文章对你有用,请随意赞赏