ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 79 - (파이썬) 클래스 등장 이전
    study with Q - 파이썬 2024. 8. 26. 21:37

    #클래스 등장 이전에는 어떤 코드를 사용하고, 그로 인해 어떤 문제가 있었나 

     

    eg) 학생들의 성적을 저장해두고 평균과 합계를 출력하는 프로그램

     

    B.C. code (Before Class)

    야옹들 = [
      {"이름":"레오", "귀여움":100, "야옹함":100, "양말":100, "사냥":0},
      {"이름":"미루", "귀여움":100, "야옹함":30, "양말":90, "사냥":80},
      {"이름":"별이", "귀여움":100, "야옹함":10, "양말":0, "사냥":20},
      {"이름":"여름", "귀여움":100, "야옹함":60, "양말":10, "사냥":60}
    ]
    
    print("이름", "총점", "평균", sep="\t")
    for 애옹 in 야옹들:
      총점 = 애옹["귀여움"] + 애옹["야옹함"] + 애옹["양말"] + 애옹["사냥"] 
      평균 = 총점 / 4
      print(애옹["이름"], 총점, 평균, sep="\t")
      
    >>>
    이름    총점    평균
    레오    300 	75.0
    미루    300 	75.0
    별이    130 	32.5
    여름    230 	57.5

     

    규모가 커지게 되면 휴먼에러가 발생할 수 있다.

    • 학생 생성 때 실수가 발생할 수 있다
    • 총점과 평균을 구하는 사양에 변경이 발생했을 때 변경 누락이 생기거나 수정에 시간이 오래 걸릴 수 있다. 

     

    그래서 

    # 생성을 획일화
    def create_cat(이름, 귀여움, 야옹함, 양말, 사냥):
      return {"이름":이름, "귀여움":귀여움, "야옹함":야옹함, "양말":양말, "사냥":사냥}
    
    야옹들 = [
      create_cat("레오", 100, 100, 100, 0),
      create_cat("미루", 100, 30, 90, 80),
      create_cat("별이", 100, 10, 0, 20),
      create_cat("여름", 100, 60, 10, 60)
    ]
    
    #사양의 변경도 함수로
    def sum_cat(애옹):
      return 애옹["귀여움"] + 애옹["야옹함"] + 애옹["양말"] + 애옹["사냥"]
    def average_cat(애옹):
      return sum_cat(애옹)/4
    
    print("이름", "총점", "평균", sep="\t")
    for 애옹 in 야옹들:
      총점 = sum_cat(애옹) 
      평균 = average_cat(애옹)
      print(애옹["이름"], 총점, 평균, sep="\t")

     

    위와 같이 바꾸고 리팩토링을 하면

     

    def create_cat(이름, 귀여움, 야옹함, 양말, 사냥):
      return {"이름":이름, "귀여움":귀여움, "야옹함":야옹함, "양말":양말, "사냥":사냥}
    def sum_cat(애옹):
      return 애옹["귀여움"] + 애옹["야옹함"] + 애옹["양말"] + 애옹["사냥"]
    def average_cat(애옹):
      return sum_cat(애옹)/4
    
    야옹들 = [
      create_cat("레오", 100, 100, 100, 0),
      create_cat("미루", 100, 30, 90, 80),
      create_cat("별이", 100, 10, 0, 20),
      create_cat("여름", 100, 60, 10, 60)
    ]
    
    print("이름", "총점", "평균", sep="\t")
    for 애옹 in 야옹들:
      총점 = sum_cat(애옹) 
      평균 = average_cat(애옹)
      print(애옹["이름"], 총점, 평균, sep="\t")
    >>>
    이름    총점    평균
    레오    300 75.0
    미루    300 75.0
    별이    130 32.5
    여름    230 57.5

     

     

    But...

    여전히 문제가 남아있으니

     

    1) 합계를 구하는 함수가 있는지 + 평균을 구하는 함수가 있는지 자체를 모름

    2) "애옹들"이라는 변수에 직접적으로 접근할 수 있다는 것

    3) 함수가 분산되어 있다는 것

     

    그래서 이 것을 보완하는 것은 다음 강의에서...


    https://replit.com/@wh3308/BC#main.py

Designed by Tistory.