这篇文章当时就没写完,等我空了再完善
0_Make_a_Manage_System
本文中,我们将实现一个学生成绩管理小程序,具体要求如下:
- 学生成绩的录入
- 学生成绩的查询
- 学生成绩的修改
- 使用格式化输出结果,使界面美观
- 有一定的防呆设计
预期效果如下:
以上是本文我们需要实现的功能,接下来我们将通过学习逐步实现这些功能。
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
,依此类推。通过索引列表可以进行截取、组合等操作。
索引也可以从尾部开始
,最后一个元素的索引为 -1
,往前一位为 -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
使用下标索引来访问列表中的值,同样也可以使用方括号 []
的形式截取字符,如下所示:
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 }
键(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)
不行。两个重要的点需要记住:
- 不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住;
- 键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行。
具体见下方实例:
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]}