코딩도장 심사문제모음
-
38.7 심사문제: 회문이 아니면 예외 발생시키기코딩도장 심사문제모음 2020. 11. 15. 17:42
표준 입력으로 문자열이 입력됩니다. 다음 소스 코드를 완성하여 입력된 문자열이 회문이면 문자열을 그대로 출력하고, 회문이 아니면 '회문이 아닙니다.'를 출력하도록 만드세요. palindrome 함수와 NotPalindromeError 예외를 작성해야 합니다. 사용한코드 1. class 2. def 3. if 4. raise 첫 접근 방법 문제에서 주어졌던 NotPalindromeError 예외를 만들어주고 회문인지 아닌지를 판별해주는 함수를 만들어주면 문제를 해결 할 수 있다. 풀이.1 2가지로 나누어 풀어보려고한다. 첫 번째로는 예외를 만들때 pass가 아닌 속성을 정의해주는방법 먼저, 예외를 만들어주기 위해 Exception 을 기반으로 하는 NotPalindromeError 이름의 예외를 만들어주자..
-
38.6 연습문제: 파일 예외 처리하기코딩도장 심사문제모음 2020. 11. 15. 16:49
다음 소스 코드를 완성하여 maria.txt 파일이 있으면 파일의 내용을 읽어서 출력하고, 파일이 없으면 '파일이 없습니다.'를 출력하도록 만드세요. 파일이 없을 때 발생하는 예외는 FileNotFoundError입니다. 풀이 maria.txt라는 파일이 있으면 파일의 내용을 'r' 읽기 모드로 열고 파일이 업으면 파일이 없습니다. 출력 파일이 있으면 읽고 나서 닷는 코드 실행 문제에서의 FileNotFoundError 예외를 except로 처리해주면 된다. try: file = open('maria.txt', 'r') except FileNotFoundError: print('파일이 없습니다.') else: s = file.read() file.close()
-
37.3 심사문제: 두 점 사이의 거리 구하기코딩도장 심사문제모음 2020. 11. 12. 23:11
표준 입력으로 x, y 좌표 4개가 입력되어 Point2D 클래스의 인스턴스 리스트에 저장됩니다. 여기서 점 4개는 첫 번째 점부터 마지막 점까지 순서대로 이어져 있습니다. 다음 소스 코드를 완성하여 첫 번째 점부터 마지막 점까지 연결된 선의 길이가 출력되게 만드세요. 사용한 코드 1. abs 첫 접근 방법 점으로 잊는 선의 길이는 해당 선을 변으로 하는 직각삼각형 대각의 길이와 같으므로 피타고라스 정의를 이용해 접근한다. 아래 식은 정답이 아니라고 나온다. width = abs(p[0].x - p[3].x) height = abs(p[0].y - p[3].y) length = math.sqrt((width**2) + (height**2)) 위 방법으로 선의 길이에 대해 접근하면, 값을 구하기 위한 조건..
-
37.2 연습문제: 사각형의 넓이 구하기코딩도장 심사문제모음 2020. 11. 12. 21:18
다음 소스 코드를 완성하여 사각형의 넓이가 출력되게 만드세요. 풀이 class Rectangle: def __init__(self, x1, y1, x2, y2): self.x1 = x1 self.y1 = y1 self.x2 = x2 self.y2 = y2 rect = Rectangle(x1=20, y1=20, x2=40, y2=30) a = rect.x2 - rect.x1 # abs를 써 절대값으로 만들어주는것으로 하자 b = rect.y2 - rect.y1 area = a * b print(a) # 20 print(b) # 10 print(area) # 200
-
36.9 심사문제: 다중 상속 사용하기코딩도장 심사문제모음 2020. 11. 11. 16:27
다음 소스 코드에서 동물 클래스 Animal과 날개 클래스 Wing을 상속받아 새 클래스 Bird를 작성하여 '먹다', '파닥거리다', '날다', True, True가 각 줄에 출력되게 만드세요. 사용한코드 1. class 2. def 3. print 첫 접근 방법 그냥 다중 속성을 사용하여 Bird라는 클래스에 두 기반 클래스를 사용하면 되는 문제이다. 심화문제가 연습문제보다 쉬웠다. 이번은 풀이없이 넘어가도록 하겠다. 풀이 class Animal: def eat(self): print('먹다') class Wing: def flap(self): print('파닥거리다') class Bird(Animal, Wing): def fly(self): print('날다') b = Bird() b.eat() b..
-
36.8 연습문제: 리스트에 기능 추가하기코딩도장 심사문제모음 2020. 11. 11. 00:26
다음 소스 코드에서 리스트(list)에 replace 메서드를 추가한 AdvancedList 클래스를 작성하세요. AdvancedList는 list를 상속받아서 만들고, replace 메서드는 리스트에서 특정 값으로 된 요소를 찾아서 다른 값으로 바꾸도록 만드세요. 풀이.1 class AdvancedList(list): def replace (self, num1, num2): # self 는 x라는 인스턴스 자기 자신이다. for i in range(len(self)): if self[i] == num1 : self[i] = num2 x = AdvancedList([1, 2, 3, 1, 2, 3, 1, 2, 3]) x.replace(1, 100) print(x) # [100, 2, 3, 100, 2, 3..
-
35.6 심사문제: 시간 클래스 만들기코딩도장 심사문제모음 2020. 11. 10. 00:34
표준 입력으로 시:분:초 형식의 시간이 입력됩니다. 다음 소스 코드에서 Time 클래스를 완성하여 시, 분, 초가 출력되게 만드세요. from_string은 문자열로 인스턴스를 만드는 메서드이며 is_time_valid는 문자열이 올바른 시간인지 검사하는 메서드입니다. 시간은 24시까지, 분은 59분까지, 초는 60초까지 있어야 합니다. 정답에 코드를 작성할 때는 class Time:에 맞춰서 들여쓰기를 해주세요. 사용한 코드 1. @classmethod (클래스 메서드) 2. map 3. int 4. ### cls ### 5. @staticmethod (정적 메서드) 6. and (비교 연산자) 첫 접근 방법 크게 2가지 메서드를 만들면 해결이 가능한 문제다 1. 문자열을 인스턴스로 만드는 메서드 (f..
-
35.5 연습문제: 날짜 클래스 만들기코딩도장 심사문제모음 2020. 11. 9. 22:53
다음 소스 코드에서 Date 클래스를 완성하세요. is_date_valid는 문자열이 올바른 날짜인지 검사하는 메서드입니다. 날짜에서 월은 12월까지 일은 31일까지 있어야 합니다. 풀이.1 인덱스 슬라이싱을 이용해 월, 일이 해당 범위 안에 들어오면 True를 반환한다. 여기서는 속성 및 인스턴스를 사용하지 않고, 결과만 구현하면 되고 클래스에 접근하지 않아도된다. 따라서 정적 메서드를 사용하였다. ## 정적 메서드에서는 if 사용후 else로 마무리 하지 않아도 정상동작 한다. class Date: @staticmethod def is_date_valid(time): if 1