[Python] 파이썬 학습일지 05

이소티·2023년 5월 2일

python

목록 보기
11/33

모듈

# 국어, 영어, 수학 점수를 입력하면 총점, 평균을 출력하는 모듈


scores = []


def addScore(s) :
    scores.append(s)

def getScores() :
    return scores

def getTotalScore() :
    total = 0
    for s in scores :
        total += s
    
    return total


def getAvgScore() : 
    avg = getTotalScore() / len(scores)

    return avg





import scores as sc

korScore = int(input('국어 점수 입력 : '))
engScore = int(input('영어 점수 입력 : '))
matScore = int(input('수학 점수 입력 : '))


sc.addSCore(korScore)
sc.addSCore(engScore)
sc.addSCore(matScore)


print(sc.getScores())
print(sc.getTotalScore())
print(sc.getAvgScore())



객체와 메모리

# 국어, 영어, 수학 점수를 입력받아 리스트에 저장하고 원본을 유지한 상태로 복사본 생성
# 과목별 점수를 10% 올렸을 경우에 평균을 출력해보자.


scores = [int(input('국어 점수 입력 : ')),
          int(input('영어 점수 입력 : ')),
          int(input('수학 점수 입력 : '))]

print(scores)




copyScores = scores.copy()


for idx,score in enumerate(copyScores) :
    result = score * 1.1
    copyScores[idx] = 100 if result > 100 else result


print('이전 평균 : %.2f' % (sum(scores) / len(scores)))
print('이후 평균 : %.2f' % (sum(copyScores) / len(copyScores)))




얕은 복사와 깊은 복사

# 선수의 원본 점수를 이용해서 평균을 출력
# 최고값과 최저값을 제외한 평균을 출력해야 함


plaOriSco = [8.7, 9.1, 8.9, 9.0, 7.9, 9.5, 8.8, 8.3]
plaCopSco = plaOriSco.copy()

plaOriSco.sort()

plaCopSco.sort()
plaCopSco.pop(0) # 최저값 제외
plaCopSco.pop() # 최고값 제외

print('plaOriSco : {}'.format(plaOriSco))
print('plaCopSco : {}'.format(plaCopSco))


  
oriTot = round(sum(plaOriSco), 2)
oriAvg = round(oriTot / len(plaOriSco), 2)
print('Original Total : {}'.format(oriTot))
print('Original Average : {}'.format(oriAvg))


copTot = round(sum(plaCopSco), 2)
copAvg = round(copTot / len(plaCopSco), 2)
print('Copy Total : {}'.format(copTot))
print('Copy Average : {}'.format(copAvg))


print('oriAvg - copAvg = {}'.format(oriAvg - copAvg))




클래스 상속

# 중간고사 클래스와 기말고사 클래스를 상속관계로 만들고 각각의 점수를 초기화
# 총점 및 평균 반환 기능도 추가



class MidExam : 

    def __init__(self, s1,s2,s3) :
  
        print('[MidExam] __init__()')
    
        self.mid_kor_score = s1
        self.mid_eng_score = s2
        self.mid_mat_score = s3


  
    def printScores(self) :
        print(f'mid_kor_score : {self.mid_kor_score}')
        print(f'mid_eng_score : {self.mid_eng_score}')
        print(f'mid_mat_score : {self.mid_mat_score}')



  
  
  class EndExam(MidExam) :

    def __init__(self, s1,s2,s3,s4,s5,s6) :
  
        print('[EndExam] __init__()')

        super().__init__(s1,s2,s3)

        self.end_kor_score = s4
        self.end_eng_score = s5
        self.end_mat_score = s6

    
  	
  	def printScores(self) :
            
            super().printScores()

            print(f'end_kor_score : {self.end_kor_score}')
            print(f'end_eng_score : {self.end_eng_score}')
            print(f'end_mat_score : {self.end_mat_score}')

    
  
  	def getTotalScore(self) :
  
         total = self.mid_kor_score + self.mid_eng_score + self.mid_mat_score
         total += (self.end_kor_score + self.end_eng_score + self.end_mat_score)

         return total
    
    
  
  	def getAverageScore(self) :
         return self.getTotalScore() / 6



  

exam = EndExam(85, 90, 88, 75, 85, 95)
exam.printScores()  #기말 점수


  
print(f'Total : {exam.getTotalScore()}')
print(f'Average : {exam.getAverageScore()}')




오버라이딩

# 삼각형 넓이를 계산하는 클래스를 만들고 이를 상속하는 클래스에서 getArea()를 오버라이딩


  
class TriangleArea : 

    def __init__(self, w, h) :
  
        self.width = w
        self.height = h

    
  
  	def printTriangleAreaInfo(self) :
  
        print(f'width : {self.width}')
        print(f'height : {self.height}')
    
    
  
  	def getArea(self) :
  
        return self.width * self.height / 2



  
  
 class NewTriangleArea(TriangleArea) :

    def __init__(self,w,h) :
  
        super().__init__(w,h)

    def getArea(self):
  
        return str(super().getArea())+'㎠'
    

  
  
ta = NewTriangleArea(7,5)
ta.printTriangleAreaInfo()
triangleArea = ta.getArea()
  

print(f'TriangleArea : {triangleArea}')
profile
데이터 관련 학습 일지

0개의 댓글