You are on page 1of 10

Bài tập về nhà phần các kiểu dữ liệu cơ bản:

Nhóm 1:
Thành viên:
1. Bùi Thị Việt
2. Nguyễn Thị Trang
3. Trương Thị Anh Thi

Để lưu trữ thông tin sinh viên, ta thường sử dụng kiểu dữ liệu có cấu trúc. Trong
Python, có thể sử dụng kiểu dictionary hoặc lập trình hướng đối tượng.
Hãy định nghĩa 1 kiểu có cấu trúc sinh viên gồm các trường sau:

Student{
id ,
name,
class,
mark1,
mark2,
average,
grade,
}

Hãy định nghĩa các thao tác có thể để thao tác trên kiểu dữ liệu sinh viên:
1: Thêm sinh viên

listStudents = []
infor={}
def addStudent():
print("* THÊM SINH VIÊN *")
n=int(input("Nhập số lượng sinh viên muốn thêm: "))
for i in range(0,n):
stExist=True
while stExist:
id = input("Nhập ID sinh viên: ")
stExist = findStudent(id) #gán stExist bằng hàm findStudent(id)
if stExist != False:
print("ID này đã tồn tại, vui lòng nhập lại:")
else:
infor["id"]= id
infor['name'] = input("Nhập tên sinh viên: ")
infor['class'] = input("Nhập lớp sinh viên: ")
infor['mark1'] = float(input("Nhập Điểm môn 1: "))
infor['mark2'] = float(input("Nhập Điểm môn 2: "))
A=infor.copy() #dùng phương thức copy để thêm thông tin sinh
viên vào list A
listStudents.append(A)
def findStudent(id):
"""Hàm tìm một sinh viên"""
for i in range(0, len(listStudents)):
if listStudents[i]["id"]== id:
return True
return False
# tìm sinh viên, nếu không có id nào trung với listStudents thì trả về False

2: Xóa sinh viên

def deleteStudent():
print("* XÓA SINH VIÊN *")
id = input("Nhập ID sinh viên cần xóa: ")
for i in listStudents:
if id==i['id']:
del i['id'],i['name'],i['class'],i['mark1'],i['mark2'] # xóa toàn bộ thông
tin của sinh viên có id cần xóa
print("Xóa sinh viên thành công")
break
else:
print("Không tìm thấy sinh viên cần xóa")

3: Sửa sinh viên
def editStudent():
print("* SỬA THÔNG TIN SINH VIÊN *")
id = input("Nhập ID sinh viên cần sửa: ")
for i in listStudents: # cho i chạy trong listStudents
if id==i['id']:
ten=input("Nhập tên sinh viên: ")
lop=input("Nhập lớp sinh viên cần sửa: ")
d1=float(input("Nhập điểm môn 1: "))
d2=float(input("Nhập điểm môn 2: "))
i.update({'id': id,'name': ten,'class': lop,'mark1': d1,'mark2': d2}) #
hàm update để cập nhập lại thông tin của sinh viên cần sửa
print("Sửa sinh viên thành công",listStudents)
break
else:
print("Không tìm thấy sinh viên cần sửa")

4: Xem danh sách sinh viên

def showStudents():
"""Hàm hiển thị danh sách sv"""
print("* DANH SÁCH SINH VIÊN HIỆN TẠI *")
for i in range(0, len(listStudents)):
if listStudents[i]!={}:
print(listStudents[i]) #in ra listStudents() đã được nhập

5: Tính điểm trung bình học tập cho từng sinh viên (average= (mark1+mark2)/2

def average():
for i in (listStudents):
if i!={}:
print("Điểm trung bình sinh
viên",i['name'],"=",round(((float(i['mark1'])+float(i['mark2']))/2),2))
# tính điểm tb của các sinh viên trong listStudents

6: Tính điểm trung bình cho môn 1 của toàn bộ sinh viên: averageMark1

def averagem1():
S=0
D=0
for i in listStudents:
if i!={}:
S=S+float(i['mark1']) # tổng điểm môn 1 của tất cả sinh viên trong
listStudents
D=D+1 #đếm số lượng sinh viên
print("Điểm trung bình môn 1 của toàn bộ sinh viên là: ",round(S/D,2))

7: Tính điểm trung bình cho môn 2 của toàn bộ sinh viên : averageMark2
def averagem2():
S=0
D=0
for i in listStudents:
if i!={}:
S=S+float(i['mark2'])
D=D+1
print("Điểm trung bình môn 2 của toàn bộ sinh viên là: ",round(S/D,2))
# tương tự cách tính điểm tb môn 1

8: Tìm xem sinh viên nào có điểm trung bình học tập thấp nhất, in ra toàn bộ
thông tin của SV đó
def minaverage():
Diem=[]
Ten=[]
for i in (listStudents):
if i!={}:
D=((float(i['mark1'])+float(i['mark2']))/2) #tính điểm trung bình
Diem=Diem+[D]
Ten=Ten+[i['name']]
min=Diem[0] #gán điểm tb thấp nhất cho sinh viên ở index 0 trong
listStudent ( sinh viên ở vị trí thứ nhất)
for j in range (1,len(Diem)):
if Diem[j]<min:
min=Diem[j]
# so sánh điểm ở từng index ở vị trí j với min, nếu min lớn hơn Diem[j]
thì min = Diem[j]
for k in range (0,len(Diem)):
if min==Diem[k]:
# nếu min bằng với điểm ở vị trí k thì Ten sinh vien ở vị trí k sẽ có
điểm tb thấp nhất
print("Sinh viên",Ten[k],"là sinh viên có điểm trung bình thấp nhất")

9: Tìm xem sinh viên nào có điểm trung bình học tập cao nhất, in ra toàn bộ
thông tin của SV đó
def maxaverage():
Diem=[]
Ten=[]
for i in (listStudents):
if i!={}:
D=((float(i['mark1'])+float(i['mark2']))/2)
Diem=Diem+[D]
Ten=Ten+[i['name']]
max=Diem[0]
for j in range (1,len(Diem)):
if Diem[j]>max:
max=Diem[j]
for k in range (0,len(Diem)):
if max==Diem[k]:
print("Sinh viên",Ten[k],"là sinh viên có điểm trung bình cao nhất")
#tương tự câu 8

10: Sắp xếp danh sách sinh viên theo lớp, nếu trong lớp có nhiều bạn thì sắp xếp
từ thấp đến cao theo điểm trung bình học tập

def sapxep():
Diem=[]
Ten=[]
D=[]
T=[]
for i in (listStudents):
if i!={}:
D=((float(i['mark1'])+float(i['mark2']))/2)
Diem=Diem+[D]
Ten=Ten+[i['name']]
D=sorted(Diem)
for i in range (0,len(Diem)):
for j in range (len(D)-1,-1,-1):
if Diem[j]==D[i]:
T=T+[j]
print("Danh sách sinh viên:",end=' ')
for k in T:
print(Ten[k],end=' ')
print()

11: Xếp loại học lực cho từng sinh viên theo công thức: Xuất sắc (TB>=9), Giỏi
(TB>=8), Khá (TB>=6.5, Trung Bình (TB>=5), Yếu (TB<5)

def xeploai():
Diem=[]
Loai=[]
Ten=[]
for i in (listStudents):
if i!={}:
D=((float(i['mark1'])+float(i['mark2']))/2)
Diem=Diem+[D]
Ten=Ten+[i['name']]
for j in Diem:
if j>=9:
Loai=Loai+["Xuất sắc"]
elif 8<=j<9:
Loai=Loai+["Giỏi"]
elif 6.5<=j<8:
Loai=Loai+["Khá"]
elif 5<=j<6.5:
Loai=Loai+["Trung bình"]
else:
Loai=Loai+["Yếu"]
for i in range (0,len(Ten)):
print("Sinh viên",Ten[i],"xếp loại",Loai[i])
print("Chọn chức năng muốn thực hiện:")
print("1: Thêm sinh viên")
print("2: Xóa sinh viên")
print("3: Sửa sinh viên")
print("4: Xem danh sách sinh viên")
print("5: Tính điểm trung bình học tập cho từng sinh viên (average)")
print("6: Tính điểm trung bình cho môn 1 của toàn bộ sinh viên")
print("7: Tính điểm trung bình cho môn 2 của toàn bộ sinh viên")
print("8: Tìm xem sinh viên nào có điểm trung bình học tập thấp nhất ")
print("9: Tìm xem sinh viên nào có điểm trung bình học tập cao nhất ")
print("10: Sắp xếp danh sách sinh viên theo lớp, nếu trong lớp có nhiều bạn
thì sắp xếp từ thấp đến cao theo điểm trung bình học tập ")
print("0: Thoát khỏi chương trình")

action = int(input())
while True:
if action == 1:
addStudent()
elif action == 2:
deleteStudent()
elif action == 3:
editStudent()
elif action == 4:
showStudents()
elif action == 5:
average()
elif action == 6:
averagem1()
elif action == 7:
averagem2()
elif action == 8:
minaverage()
elif action == 9:
maxaverage()
elif action == 10:
sapxep()
elif action == 11:
xeploai()
elif action == 0:
break
print("Chọn action")
action = int(input())

You might also like