実績の例
作成
私の答え:
class Sungjuk():
def input_sungjuk(student):
data = {}
data["haknum"] = input("학번 : ")
data["irum"] = input("이름 : ")
data["kor"] = int(input("국어 : "))
data["eng"] = int(input("영어 : "))
data["math"] = int(input("수학 : "))
def process_sungjuk(student):
data = {}
data["tot"] = data["kor"] + data["eng"] + data["math"]
data["avg"] = data["tot"] / 3
if data["avg"] >= 90:
data["grade"] = "수"
elif data["avg"] >= 80:
data["grade"] = "우"
elif data["avg"] >= 70:
data["grade"] = "미"
elif data["avg"] >= 60:
data["grade"] = "양"
else:
data["grade"] = "가"
def output_sugjuk(student):
total_avg = 0
print("\n ***성적표***")
print("=================================================")
print("학번 이름 국어 영어 수학 총점 평균 등급")
print("=================================================")
for data in student:
total_avg += data["avg"]
print("%4s %4s %3d %3d %3d %3d %6.2f %s"
% (data['num'], data['name'], data["kor"], data["eng"],
data["math"], data["tot"], data["avg"], data["grade"]))
答え:selfでdefaultを定義する
文字はNone、数字は0
Noneではなく
前が成績等級なら
ifを追加したのは、成績カテゴリをこのコンテンツから分離するためです.
「実績」カテゴリを「一般」実行文から分離し、将来使用する
Q.生成者が変数を宣言するときに、ユーザが学号、氏名、成績、単位を入力するときに自分の希望する資料型だけを受け入れるように文法規定はありますか?
A.この資料型は存在しません!
1人分の成績データを印刷できます
dictの例に比べて簡単です
このクラスの設計は成績処理を最適化するためだからです.
(obj = Sungjuk())
目的の機能を事前に作成してインポートします(obj.input sungjuk()
output呼び出しで
(obj.output_sungjuk())
成績オブジェクトにリストを入れる
dictの代わりに成績クラスを使用
このようなステップを別の場所で使用するには
モジュールをインポート
from sungjuck_6 import Sungjuck
Q.クラスのメソッドでは、メンバー変数が必要になるたびに「self.新しい変数=値」と宣言するよりも、ジェネレータですべてのメンバー変数を宣言したほうがいいですか?
A.一目瞭然
複数入力のsungjuk 5.py 1人の成績を入力する場合sungjuk 6.pyのsungjukクラスを参照して、人を入力するときに使用します
私の答え:
from sungjuk_exam import Sungjuk
def f_menu():
print(" *** 메뉴 ***")
print("1. 성적정보 입력")
print("2. 성적정보 출력")
print("3. 성적정보 조회")
print("4. 성적정보 수정")
print("5. 성적정보 삭제")
print("6. 프로그램 종료")
def f_input(f_students):
data = {}
obj = Sungjuk()
obj.input_sungjuk()
obj.process_sungjuk()
f_students.append(data)
print("\n성적정보 입력 성공!\n")
def f_output(f_students):
total_avg = 0
obj = Sungjuk()
obj.output_sugjuk()
if len(f_students) == 0:
print("\n데이터가 없습니다!!!\n")
return
print("=======================================")
print("\t\t 총학생수 = %d, 전체평균 = %.2f\n"
% (len(f_students), total_avg / len(f_students)))
def f_search(f_students):
num = input("\n조회할 학번을 입력하세요 : ")
for data in f_students:
if (data["num"] == num):
print("\n학번 이름 국어 영어 수학 총점 평균 등급")
print("==================================================")
print("%4s %4s %3d %3d %3d %3d %6.2f %s"
% (data['num'], data['name'], data["kor"], data["eng"],
data["math"], data["tot"], data["avg"], data["grade"]))
print("===================================================")
break # return도 가능
else:
print("\n조회할 학번 %s가 없습니다! \n" % num)
def f_update(f_students):
num = input("\n수정할 학번을 입력하세요 : ")
for data in f_students:
if (data["num"] == num):
data["kor"] = int(input("국어점수를 입력하세요 : "))
data["eng"] = int(input("영어점수를 입력하세요 : "))
data["math"] = int(input("수학점수를 입력하세요 : "))
data["tot"] = data["kor"] + data["eng"] + data["math"]
data["avg"] = data["tot"] / 3.
if data["avg"] >= 90:
data["grade"] = "수"
elif data["avg"] >= 80:
data["grade"] = "우"
elif data["avg"] >= 70:
data["grade"] = "미"
elif data["avg"] >= 60:
data["grade"] = "양"
else:
data["grade"] = "가"
print("\n학번 %s 성적정보 수정 성공!!\n" % data['num'])
break
else:
print("\n수정할 학번 %s가 없습니다!\n" % num)
def f_delete(f_students):
num = input("\n삭제할 학번을 입력하세요 : ")
for data in f_students:
if(data["num"] == num):
f_students.remove(data)
print("\n학번 %s 성적정보 삭제 성공!!\n" %data["num"])
break
else:
print("\n삭제할 학번 %s가 없습니다!\n" % num)
if __name__ == "__main__":
students = []
while True:
f_menu()
menu = int(input("\n메뉴를 선택하세요 : "))
if menu == 1:
f_input(students)
elif menu == 2:
f_output(students)
elif menu == 3:
f_search(students)
elif menu == 4:
f_update(students)
elif menu == 5:
f_delete(students)
elif menu == 6:
print("\n프로그램 종료...")
break;
else:
print("\n메뉴를 다시 입력하세요!!!\n")
obj=Sungjuk()#成績オブジェクトを作成obj.input_sungjunk()
真実の答え:
👆にゅうりょくぶ
以前はdictで置いていたが今はsungjukクラスに置いてある
👆 しゅつりょくぶ
objが性的対象となる
obj受信10
objは関数終了時に領域変数により消失する
objは10、削除10
ゴミの対象になって消える
student.代替remove(obj)
delobjを使うとどうなりますか?
delobjといえば
このセクションは削除されました
だから間違いだ.
delobjになりたいなら
obj.hakbunをhakbunに変更すればいいです
「作成したオブジェクトの参照が変更されない場合、削除されません」
# 함수 추가함 sungjuk_5 answer과 다름
from sungjuk_exam import Sungjuk
def f_menu():
print(" *** 메뉴 ***")
print("1. 성적정보 입력")
print("2. 성적정보 출력")
print("3. 성적정보 조회")
print("4. 성적정보 수정")
print("5. 성적정보 삭제")
print("6. 프로그램 종료")
def f_input(students):
obj = Sungjuk()
obj.input_sungjuk() # 입력
print()
obj.process_sungjuk() # 평균, 등급 처리
students.append(obj) # obj 객체의 주소를 복제하는 것
print("\n성적정보 입력 성공!\n")
def f_output(students):
total_avg = 0
if len(students) == 0:
print("\n데이터가 없습니다!!!\n")
return
print("\n *** 성적표 ***")
print("============================================================")
print("학번 이름 국어 영어 수학 총점 평균 등급")
print("============================================================")
for obj in students: # obj가 성적 개체가 됨
total_avg += obj["avg"]
obj.output_sungjuk()
print("============================================================")
print("\t\t 총학생수 = %d, 전체 평균 = %.2f\n"
% (len(students), total_avg / len(students)))
def f_search(students): # 주소 전달 받음
hakbun = input("\n조회할 학번을 입력하세요 : ")
for obj in students:
if (obj.hakbun == hakbun):
print("\n학번 이름 국어 영어 수학 총점 평균 등급")
print("==================================================")
obj.output_sungjuk()
print("===================================================")
break # return도 가능
else:
print("\n조회할 학번 %s가 없습니다! \n" % num)
def f_update(students):
hakbun = input("\n수정할 학번을 입력하세요 : ")
for obj in students:
if (obj.hakbun == hakbun):
obj.kor = int(input("국어점수를 입력하세요 : "))
obj.eng = int(input("영어점수를 입력하세요 : "))
obj.math = int(input("수학점수를 입력하세요 : "))
obj.process_sungjuk()
print("\n학번 %s 성적정보 수정 성공!!\n" % obj.hakbun)
break
else:
print("\n수정할 학번 %s가 없습니다!\n" % hakbun)
def f_delete(students):
hakbun = input("\n삭제할 학번을 입력하세요 : ")
for obj in students:
if(obj.hakbun == hakbun):
students.remove(obj) # obj는 10인데 10을 삭제하는 것
print("\n학번 %s 성적정보 삭제 성공!!\n" % obj.hakbun)
break
else:
print("\n삭제할 학번 %s가 없습니다!\n" % hakbun)
del student(obj)#リストオブジェクトのアドレスをクリア再アクセス不可=>スパムオブジェクト
学習番号の繰り返しを確認するには
def f_input(students):
obj = Sungjuk()
print()
obj.input_sungjuk() # 입력
for data in students:
if (obj.hakbun == data.hakbun):
print("\n이미 존재하는 학번입니다.\n")
return
"""
while True:
obj.input_sungjuck()
for data in students:
if (obj.hakbun == data.hakbun):
print("\n이미 존재하는 학번입니다.\n")
break
else:
break
"""
obj.process_sungjuk() # 평균, 등급 처리
students.append(obj) # obj 객체의 주소를 복제하는 것
print("\n성적정보 입력 성공!\n")
このように条件を与えるfor文は、学号が重複したときにメインメニューに戻るように設計されています.
文が繰り返されると、メニューではなく新しい学号が入力されるまで文が繰り返されます.
Reference
この問題について(実績の例), 我々は、より多くの情報をここで見つけました https://velog.io/@nahye0910/성적-예제テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol