Python
-
TIL.55 Python 정규표현식 사용하기TIL/Python 2020. 12. 3. 17:20
정규표현식 사용하기 정규표현식 (regular expression)은 일정한 규칙(패턴)을 가진 문자열을 표현하는 방법이다. 복잡한 문자열 속에서 특정한 규칙으로 된 문자열을 추출하거나 바꿀때 사용하며 또한, 문자열이 정해진 규칙에 맞는지 판단할때도 사용한다. 쪼개서 학습하면 이해가 빠르다고 한다. 정규 표현식은 re 모듈을 가져와서 하용하며 match 함수와 serch 함수를 사용한다. 문자열 판단하기 특정 문자열이 포함되어 있는지 판단해보자 re.match('패턴', '문자열') >>> import re >>> re.match('Hello', 'Hello, world!') # 문자열이 있으므로 정규표현식 매치 객체가 반환됨 >>> re.match('Python', 'Hello, world!') # 문..
-
38.7 심사문제: 회문이 아니면 예외 발생시키기코딩도장 심사문제모음 2020. 11. 15. 17:42
표준 입력으로 문자열이 입력됩니다. 다음 소스 코드를 완성하여 입력된 문자열이 회문이면 문자열을 그대로 출력하고, 회문이 아니면 '회문이 아닙니다.'를 출력하도록 만드세요. palindrome 함수와 NotPalindromeError 예외를 작성해야 합니다. 사용한코드 1. class 2. def 3. if 4. raise 첫 접근 방법 문제에서 주어졌던 NotPalindromeError 예외를 만들어주고 회문인지 아닌지를 판별해주는 함수를 만들어주면 문제를 해결 할 수 있다. 풀이.1 2가지로 나누어 풀어보려고한다. 첫 번째로는 예외를 만들때 pass가 아닌 속성을 정의해주는방법 먼저, 예외를 만들어주기 위해 Exception 을 기반으로 하는 NotPalindromeError 이름의 예외를 만들어주자..
-
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)) 위 방법으로 선의 길이에 대해 접근하면, 값을 구하기 위한 조건..
-
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..
-
34.6 심사문제: 게임 캐릭터 클래스 만들기코딩도장 심사문제모음 2020. 11. 8. 21:12
표준 입력으로 게임 캐릭터 능력치(체력, 마나, AP)가 입력됩니다. 다음 소스 코드에서 애니(Annie) 클래스를 작성하여 티버(tibbers) 스킬의 피해량이 출력되게 만드세요. 티버의 피해량은 AP * 0.65 + 400이며 AP(Ability Power, 주문력)는 마법 능력치를 뜻합니다. 사용한 코드 1. class 2. def 3. self 첫 접근 방법 클래스 이름/ 메서드 이름/ 매개변수 3개 를 이용하기만 하면 문제를 해결 할 수 있다. 풀이 아래와 같이 self, 매개변수를 이용하고 모든 매개변수를 그대로 속성으로 만들어준다. class Annie: def __init__ (self, health, mana, ability_power): self.health = health self.m..
-
33.6 심사문제: 카운트다운 함수 만들기코딩도장 심사문제모음 2020. 11. 6. 22:38
표준 입력으로 정수가 입력됩니다. 다음 소스 코드를 완성하여 함수 c를 호출할 때마다 숫자가 1씩 줄어들게 만드세요. 여기서는 함수를 클로저로 만들어야 합니다. 정답에 코드를 작성할 때는 def countdown(n):에 맞춰서 들여쓰기를 해주세요. 사용한 코드 1. nonlocal 2. def 3. return 첫 접근 방법 10을 입력할 경우 10(포함), 9, 8, ... 1 이 마지막이라는 것을 기준으로 범위만 정해주면 이전 연습문제와 같이 어려운 부분없이 문제 해결이 가능하다. 풀이 1. countdown의 지역 변수 count 를 만들고 n + 1로 입력된 n 값도 함께 출력되도록 만들어준다. def countdown(n): count = n + 1 2. down이라는 안쪽 함수를 하나 더 생..
-
32.5 심사문제: 파일 이름을 한꺼번에 바꾸기코딩도장 심사문제모음 2020. 11. 6. 17:52
표준 입력으로 숫자.확장자 형식으로 된 파일 이름 여러 개가 입력됩니다. 다음 소스 코드를 완성하여 파일 이름이 숫자 3개이면서 앞에 0이 들어가는 형식으로 출력되게 만드세요. 예를 들어 1.png는 001.png, 99.docx는 099.docx, 100.xlsx는 100.xlsx처럼 출력되어야 합니다. 그리고 람다 표현식을 사용해야 하며 출력 결과는 리스트 형태라야 합니다. 람다 표현식에서 파일명을 처리할 때는 문자열 포매팅과 문자열 메서드를 활용하세요. 사용한 코드 1. list 2. map 3. {}.format 4. int 첫 접근 방법 이번 문제는 생각을 굉장히 많이해야하는 문제였다. 또한, 메서드를 알아도 어떻게 적용하는지를 몰라 구글링 힌트를 보지 않고서는 풀지 못했다. (결론, 힌트 참고..
-
31.5 심사문제 : 재귀호출로 피보나치 수 구하기코딩도장 심사문제모음 2020. 11. 4. 16:42
표준 입력으로 정수 한 개가 입력됩니다(입력 값의 범위는 10~30). 다음 소스 코드를 완성하여 입력된 정수에 해당하는 피보나치 수가 출력되게 만드세요. 피보나치 수는 0과 1로 시작하며, 다음 번 피보나치 수는 바로 앞의 두 피보나치 수의 합입니다. 사용한 코드 1. def 2. if 3. return 첫 접근 방법 0, 1로 시작하는점 호출하는 인수의 개수가 "하나"인점 수열의 일정 규칙이 있다는점을 파악하여 문제를 해결 할 수 있다. 풀이 코드를 작성하기 전 문제부터 살펴보자 입력값 n 과 결과값을 나열하여 수열이라 생각해 관계를 살펴보자. # n # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21... ..