通过本系统可以完成如下操作:
1.显示所有人的成绩显示所有人的成绩
2.显示某个人的成绩
正确输入
人名输入错误时
3.添加新同学添加新同学
4.给同学录入成绩成功输入
输入的成绩如果不是数字
没有找到需要添加成绩的同学
5.退出
6.主界面输入字符错误时
7.其他
当录入的成绩为负数,显示的会为Fail
程序
students = [["Ben", {"Maths": 67, "English": 78, "Science": 72}],
["Mark", {"Maths": 56, "Art": 64, "History": 39, "Geography": 55}],
["Paul", {"English": 66, "History": 88}]]
# 制作分数段
# 0~50不及格,50~60D,60~70C,70~80B,80~100A,101~作弊
grades = ((0, "FAIL"), (50, "D"), (60, "C"), (70, "B"), (80, "A"), (101, "CHEAT!"))
# 显示全部学生的姓名和成绩
def print_report_card(report_student=None):
for student in students: # 从数组中依次读取每个学生的词条
if (student[0] == report_student) or (report_student is None): # 确定读取到了数据
print("Report card for student ", student[0])
for subject, mark in student[1].items(): # 在字典中依次读取该名同学的学科和对应的程序
for grade in grades: # 读取分数段
if mark < 0: # 如果出现了负数则判断为0
mark = 0
if mark - 10 < grade[0]: # 把成绩转换为等第
print(subject, " : ", grade[1])
break
# 显示一位学生的姓名和成绩
def print_one_report_card():
report_student = input("Please input the student's name") # 得到学生姓名
i = 0
for student in students: # 从数组中依次读取每个学生的词条
if student[0] == report_student:
i = 1
print("Report card for student ", student[0])
for subject, mark in student[1].items(): # 在字典中依次读取该名同学的学科和对应的程序
for grade in grades: # 读取分数段
if mark < 0: # 如果出现了负数则判断为0
mark = 0
if mark - 10 < grade[0]: # 把成绩转换为等第
print(subject, " : ", grade[1])
break
if i == 0: # 如果查不到输入的学生姓名
print("We cannot find this student in the database.")
# 添加一位学生的姓名
def add_one_report_name():
report_student = input("Please input the student's name") # 得到学生姓名
i = 0
for student in students: # 从数组中依次读取每个学生的词条
if student[0] == report_student: # 如果在数组中找到了学生姓名则进行提示并退出添加
print("This student", student[0], "already exists in the database ")
i = 1
break
if i != 1: # 添加学生词条
students.append([report_student, {}])
# 添加一位学生的成绩
def add_one_report_card():
report_student = input("Please input the student's name") # 得到学生姓名
d = 0
c = None
for student in students: # 得到该学生在数组中所处的位置
if student[0] == report_student:
c = 0
continue
d = d + 1
if c is None: # 如果找不到该学生则提示添加
print("We cannot find this student in the database.If it is necessary, enter 3 to create")
while c == 0:
a = input("Please input the lesson")
b = input("Please input the score")
if b.isdigit() is False: # 判断输入的成绩是否为数字
print("The score must be a number")
break
else:
b = int(b)
students[d][1][a] = b # 添加课程a成绩为b
print("Enter 0 keep typing")
print("Enter other number return")
c = input()
if c.isdigit() is False: # 如果输入为0就跳出循环,输入其他字符则可以继续输入下一门课程的成绩
c = 1
else:
c = int(c)
# 主程序
# 主循环
while True:
print("Welcome to the student database")
print("What can I help you with?")
print("Enter 1 to view all report cards")
print("Enter 2 to view the report card for a student")
print("Enter 3 to add a student")
print("Enter 4 to add a mark to a student")
print("Enter 5 to exit")
# 判断输入的是否是数字
# 是:转换为int类型
# 否:提示"Please input the legal number in 1-5"
user_choice = input("Choice: ")
if user_choice.isdigit() is False:
user_choice = 0
else:
user_choice = int(user_choice)
# 判断输入的是否是数字1-5
# 是1:显示全部学生的姓名和成绩
# 是2:显示一位学生的姓名和成绩
# 是3:给一位学生添加姓名
# 是4:给一位学生添加成绩
# 是5:跳出循环
# 否:提示"Please input the legal number in 1-5"
if user_choice == 1:
print_report_card()
elif user_choice == 2:
print_one_report_card()
elif user_choice == 3:
add_one_report_name()
elif user_choice == 4:
add_one_report_card()
elif user_choice == 5:
break
else:
print("Please input the legal number in 1-5")
print("Goodbye and thank you for using the Student database")
我学习Python到此为止可以算做告一段落,学到这里就可以基本阅读和更改他人的代码并具备一定的编写能力。我在2018年8月正式接触Python,它是我在C语言之后接触的第二门编程语言也是我自学的第一门语言,和C相比它的语法格式更加简单(最主要的是没有指针)并且它是一门面向对象编程的语言,还有很多大佬上传了很多的模块以供使用。随着电子信息的发展,嵌入式编程的语言也开始从最早的汇编,到现在的C,以至未来的Python(就现在而言在单片机跑Linux用Python上还是太奢侈了)。这次学校课程里添加Python的学习也算的上是一次复习,课程主旨还是在嵌入式编程,所以到这里就完结了,当然之后我可能还会研究用python来制作动态网页和爬虫。这不是结束,只是一个新的开始。撒花~~~
人生苦短,我学Python