Sparta_내배캠_이창호튜터님강의_파이썬 심화_TIL_220914

이태은·2022년 9월 14일
0

회고

목록 보기
18/71
post-thumbnail

계산기 심화

class Calc():

    def __init__(self, num1, num2):
        self.num1 = num1
        self.num2 = num2

    def plus(self):
        return self.num1 + self.num2

    def minus(self):
        return self.num1 - self.num2

    def multiple(self):
        return self.num1 * self.num2

    def divide(self):
        try:
            return self.num1 / self.num2
        except ZeroDivisionError:
            return "0은 나눌 수 없습니다."

    def print(self):
        print("두 수를 더한값 : ", self.plus())  # 더한 값
        print("두 수를 뺀 값 : ", self.minus())  # 뺀 값
        print("두 수를 곱한값 : ", self.multiple())  # 곱한 값
        print("두 수를 나눈값 : ", self.divide())  # 나눈 값



try:
    num1 = int(input("첫번째 숫자 입력 : "))
    num2 = int(input("두번째 숫자 입력 : "))
    calc = Calc(num1, num2)
    calc.print()

except ValueError:
    print("숫자만 입력 가능합니다.")

# calc.set_number(num1, num2)

코드 풀이

  • try except :

    • 전체적으로 감싸지말고 필요한 부분을 타깃으로 하여 작성하기

      • 문법상 오류는 없지만 오류가 발생 할 수 있기때문이다.
    • 타깃을 해야하는곳에 안적으니 예외처리가 안되는것이다. 잘 확인할것

    • print함수 : def를 사용하여 함수로 정의해 사용해보았다.

  • self

    • jsc에서 this와 같은 작용. 포탈을 통해 해당 타깃으로 이동시켜준다.


리스트 필터 및 정렬

  • 제공된 코드

    from pprint import pprint
    people = [
       ("Blake Howell", "Jamaica", 18, "aw@jul.bw"),
       ("Peter Bowen", "Burundi", 30, "vinaf@rilkov.il"),
       ("Winnie Hall", "Palestinian Territories", 22, "moci@pacivhe.net"),
       ("Alfred Schwartz", "Syria", 29, "ic@tolseuc.pr"),
       ("Carrie Palmer", "Mauritius", 28, "fenlofi@tor.aq"),
       ("Rose Tyler", "Martinique", 17, "as@forebjab.et"),
       ("Katharine Little", "Anguilla", 29, "am@kifez.et"),
       ("Brent Peterson", "Svalbard & Jan Mayen", 22, "le@wekciga.lr"),
       ("Lydia Thornton", "Puerto Rico", 19, "lefvoru@itbewuk.at"),
       ("Richard Newton", "Pitcairn Islands", 17, "da@lasowiwa.su"),
       ("Eric Townsend", "Svalbard & Jan Mayen", 22, "jijer@cipzo.gp"),
       ("Trevor Hines", "Dominican Republic", 15, "ev@hivew.tm"),
       ("Inez Little", "Namibia", 26, "meewi@mirha.ye"),
       ("Lloyd Aguilar", "Swaziland", 16, "oza@emneme.bb"),
       ("Erik Lane", "Turkey", 30, "efumazza@va.hn"),
    ]

  • 작성 코드

    for name, country, age, email in people}
    over_20 = []
    for person in people:
       if person[2]>20:
           over_20.append(person)
    
    over_20.sort(key=lambda x:x[2])
    
    pprint(over_20)
    

코드 풀이

이렇게 푸는것이 맞는지 모르겠으나 일정 범위 내의 값을 뽑는 것이 이 방법밖에 생각나지않았다.

  • for 문을 사용하여 'people' 내의 한 칸씩을 'person'으로 정의 한 후 나이를 비교하였다.
    20 살이 넘는 경우에 미리 선언해둔 빈 list 인 'over_20'에 넣었고,
    for문 종료 후 sortlambda를 사용하여 'over_20' 의 2번 째 값인 age 오름차순으로 정렬 하였다.
  • 중간에 지운 내용
    # people = {name: {"country": country, "age": age, "email":email} 
    • 처음에는 일단 pprint를 이용하여 보기 쉽게 정리해보자 하고 작성한 코드였는데,
      이렇게 정리 하고나니 'age'만을 어떻게 빼야 할지 감을 잡지 못하여 지웠었다.
      위와 같이 출력이 됨
profile
나는 탱구

0개의 댓글