[python] 파이썬 성적관리 프로그램 ( 딕셔너리 사용 )
- 언어/파이썬
- 2020. 10. 15.
---기능--- 1. 입력 2. 검색 3. 수정 4. 삭제 5. 출력(전체) 6. 종료 |
#맨처음
student = dict()
while True:
select = int(input("1.입력 2.검색 3.수정 4.삭제 5.출력 6.종료 \n"))
student라는 딕셔너리를 생성해주고 사용자가 프로그램을 종료시킬때까지 반복시키기위해
while True: 로 무한루프를 주었습니다. 그리고 기능 선택하기 위한 변수로 select를 생성 해주었습니다.
사용자가 누르는 숫자에 따라 기능을 사용할 수 있습니다.
#성적 입력
# ----- 성적 입력 -----
if select == 1:
id=input('학번 : ')
if ( id not in student) == True:
name = input('이름 : ')
kor = int(input('국어 : '))
eng = int(input('영어 : '))
math = int(input('수학 : '))
print('입력 완료')
total = kor+eng+math
avg = round(total/3,3)
student[id] = [name,kor,eng,math,total,avg]
continue
else:
print('학생이 이미 존재')
사용자가 1을 입력하면 들어오는 if문입니다.
입력받은 학번을 id 변수에 저장하고 student객체에 동일한 id가 존재하지 않다면
이름,국,영,수 점수를 입력받습니다.
score변수에 총점을 담고 avg에는 평균값을 입력합니다.
이제 stduent[id]에 name,kor,eng,math,score,avg를 담아줍니다.
( EX : 학번을 1로 입력하고 이름/국/영/수에 test/2/2/2 점을 입력하면 student[id]에는 test/2/2/2/6/2.0 이 담기게 됩니다.)
학번이 중복일경우 학생이 존재한다고 출력됩니다.
#학생 검색
if select == 2:
search = input('학번 : ')
if(search in student) == True:
info = student[id]
print('이름\t국어\t영어\t수학\t총점\t평균\t')
for i in range(len(info)):
print(info[i:i+1],end='\t')
print()
continue
else:
print('학생 존재 X ')
사용자가 2를 입력하면 들어오는 if문 입니다.
search에 학번(key)을 입력받습니다.
student객체에 사용자가 입력한 학번이 존재할경우 if문 내의 내용이 실행이 됩니다.(존재하지 않을경우 실행 X )
info라는 변수에 student[id]에 해당하는 값을 담아줍니다.
info의 크기 만큼 for문을 반복하고 결과를 출력해줍니다.
print(info[i:i+1],end='\t') 이부분은 print(info[0:1],end='\t',info[1:2],end='\t',info.......과 같은 의미입니다.
info[0:1]에는 이름, info[1:2]에는 국어, [2:3]에는 영어 이런식으로 값이 들어가있고 for문으로 간략하게 출력해주었습니다.
#수정
if select == 3:
update = input('수정할 학생의 학번을 입력 : ')
if(update in student) == True:
name = input('이름 입력 : ')
kor = int(input('국어 성적: '))
eng = int(input('영어 성적: '))
math = int(input('수학 성적: '))
print('성적 입력 완료.')
score = kor+eng+math
avg = round(score/3, 3)
student[update] = [name,kor,eng,math,score,avg]
continue
else:
print('학생이 존재하지 않음')
continue
update 변수에 학번을 입력받습니다.
입력한 학번이 student에 존재하면 if문 내의 내용이 실행이 됩니다.
name,kor,eng,math 값을 입력받고 새로 값을 넣어줍니다 ( 부분수정은 아직 미구현 )
#삭제
if select == 4:
delete = input('삭제할 학번 : ')
if(delete in student) == True:
student.pop(delete)
print('삭제 완료')
continue
else:
print('학생 정보 X')
continue
delete변수에 학번을 입력받습니다.
pop() 함수를 사용해 student의 입력받은 학번을 제거 합니다.
#전체출력
if select == 5:
for id in student:
print('학번: ', id,'이름: ', name)
print('[이름]\t\t[국어]\t[영어]\t[수학]\t[총점]\t[평균]')
info = student[id]
for i in range(len(info)):
print(info[i:i+1],end='\t')
print()
continue
student에 존재하는 id(?) 만큼 반복하고
출력하는 부분은 #검색 부분과 동일합니다.
#종료
if select == 6:
break
전체코드
## import pickle
student = dict()
while True:
select = int(input('1. 입력 2.검색 3.수정 4.삭제 5.출력 6.종료\n'))
if select == 1:
id=input('학번 : ')
if ( id not in student) == True:
name = input('이름 : ')
kor = int(input('국어 : '))
eng = int(input('영어 : '))
math = int(input('수학 : '))
print('입력 완료')
total = kor+eng+math
avg = round(total/3,3)
student[id] = [name,kor,eng,math,total,avg]
continue
else:
print('학생이 이미 존재')
if select == 2:
search = input('학번 : ')
if(search in student) == True:
info = student[id]
print('이름\t국어\t영어\t수학\t총점\t평균\t')
for i in range(len(info)):
print(info[i:i+1],end='\t')
print()
continue
else:
print('학생 존재 X ')
if select == 3:
update = input('수정할 학생의 학번을 입력 : ')
if(update in student) == True:
name = input('이름 입력 : ')
kor = int(input('국어 성적: '))
eng = int(input('영어 성적: '))
math = int(input('수학 성적: '))
print('성적 입력 완료.')
score = kor+eng+math
avg = round(score/3, 3)
student[update] = [name,kor,eng,math,score,avg]
continue
else:
print('학생이 존재하지 않음')
continue
if select == 4:
delete = input('삭제할 학번 : ')
if(delete in student) == True:
student.pop(delete)
print('삭제 완료')
continue
else:
print('학생 정보 X')
continue
if select == 5:
for id in student:
print('학번: ', id,'이름: ', name)
print('[이름]\t\t[국어]\t[영어]\t[수학]\t[총점]\t[평균]')
info = student[id]
for i in range(len(info)):
print(info[i:i+1],end='\t')
print()
continue
if select == 6:
break
#아직 미완성부분
1. 부분수정 ( 딕셔너리에 익숙하지 않아서 구현중에 오류를 아직 해결을 못해서 미완성된것 먼저 올림 ) 2. 디자인? 이 너무 안이쁨 3. 학생별로 과목 추가 or 변경 가능하도록하고싶음 |
'언어 > 파이썬' 카테고리의 다른 글
[python] 파이썬 아나콘다 설치 (0) | 2020.11.03 |
---|---|
[python] 파이썬 람다 표현식 사용하기 (0) | 2020.10.15 |
[python] 파이썬 함수 사용하기 #3언패킹 리스트,키워드인수,디폴트 인자값 (0) | 2020.10.15 |
[python] 파이썬 함수 사용하기 #2사칙연산 해주는 함수 만들기 (0) | 2020.10.15 |
[python] 파이썬 함수 사용하기 #1함수 생성 및 호출 (0) | 2020.10.15 |