점프 투 파이썬 한권 끝내기
문제 풀기 전에 어차피 한번씩 다 봐야할 개념. 이 전에 2번이나 봤던 책이니 오늘 한번에 다 보자.
p.107 Q2) 리스트를 문자열로 만들기!
요소 사이에 공백 넣기 (구분자는 공백)
food = [ "123", "자장면", "짬뽕" ...]
# 요소들 사이에 공백 넣기 (구분자는 공백)
print (" ".join(food))
# 모든 요소들을 하나로 연결하여 출력 (구분자 없음)
print("".join(food))
# 줄바꿈 문자를 구분자로 하여 출력
print("\n".join(food))
조건문
pass
조건문에서 아무일도 하지 않게 설정하고 싶다면 pass
if문 한 줄로 작성하기
if 'money' in pocket:pass
else: print("카드를 꺼내라")
while문 빠져나가지 않고 while문의 처음으로 가고 싶을 때,
continue
ex) 60점 이상인 사람에게는 축하메세지 보내고, 나머지 사람에게는 아무런 메세지도 전하지 않는다고 가정. 그럴 때 사용
if mark < 60: continue
다양한 for문의 사용
a = [(1,2),(3,4),(5,6)}
for (first,last) in a:
print(first+last)
range(10)은 0부터 10미만의 숫자를 포함하는 range 객체를 만들어준다.
Q) 문자열 일 때는 어떻게 ? -> for number in ragne(len(marks))
리스트 내포
[표현식 for 항목 in 반복 가능 객체 if 조건
a = [1,2,3,4]
result = []
for num in a:
result.append(num*3)
print(result)
이걸 이렇게 수정 가능
result = [num * 3 for num in a]
만약 조건을 추가한다면 (짝수에만 3을 곱하고 싶다면)
result = [num * 3 for num in a if num % 2 == 0]
만약에 구구단을 하고 싶다면? (for문 2개도 리스트 내포가 가능)
result = [x*y for x in range(2,10)
for y in range(1,10)]
반올림할 때, 간단히 하려면 ? round 함수 쓰면 돼
소수 둘째 자리에서 반올림하고 싶으면
round(값,2)
함수 : 입력값을 가지고 어떤 일을 수행한 다음에 그 결과물을 내어놓는 것
함수
Q) 입력값이 몇 개인지 모를 떄는 어떻게 해야할까?
def 함수명 (*입력변수):
수행할 문장
*입력변수 이렇게 *을 붙이면 입력값들을 전부 모아서 튜플로 만들어준다.
Q) 입력 인수에 초깃값 미리 설정하기
def say_myself(name,old,man=True
위치를 항상 마지막에 설정할 것. 즉 초기화 시키고 싶은 변수들을 항상 뒤쪽에 위치시켜야 한다.
사용자 입출력
input()은 입력되는 모든 것을 문자열로 취급한다.
한 줄에 하나씩 결과값 출력 -> print(i, end='')
sys 모듈로 입력 인수 주기
ex) args = sys.argv[1:]
이야기 형식으로 클래스 기초 쌓기
self 간단히 살펴보기
서비스 업체는 오직 가입한 사람들에게만 서비스를 제공하고 싶어 한다. 이를 위해 그들은 더하기 서비스에 가입했는지 여부를 확인하기 위한 장치를 추가했다.
def sum(self,a,b):
result = a+b
print("%s + %s = %s 입니다." % (a,b,result))
pey = Service() pey.sum(1,1)
이렇게 하면 pey라는 아이디를 가진 사람이 이 서비스 업체의 sum이라는 서비스를 이용하겠다고 요청한다는 뜻이다. 이렇게 해도 문제 없는데 self는 호출시 이용했던 인스턴스(즉,pey 라는 아이디)로 바뀌게 된다.
self 제대로 알기
class Service:
secret = "영구는 배꼽이 두개다"
def setname(self,name):
self.name = name
def sum(self,a,b):
result = a+b
print("%s님 %s + %s = %s 입니다." % (self.name, a,b,result))
이렇게 되면 pey = Service() pey.setname(“홍길동”) pey.sum(1,1) 중요한 건 -> self는 Service에 의해서 생성된 인스턴스(ex:pay)를 지칭한다는 사실을 잊지말자
init
위에 코드에서 변경된 건 단하나
setname이름을 __init__으로
의미 : “인스턴스를 만들 때 항상 실행된다.” 즉, 아이디를 부여받을 때 항상 실행된다는 의미. 따라서 이 서비스 업체에 가입할 때는 pey = Service(“홍길동”) 이런 식으로 입력해줘야한다.
계산기 만들기
클래스 함수를 다른 말로 메서드라고도 한다.
클래스의 상속
class 상속받을 클래스명(상속할 클래스명)
메서드 오버라이딩
‘김씨네 집’클래스는 ‘박씨네 집’클래스를 상속 받았다. 여기서 ‘김씨네 집’클래스가 상속받은 travel 함수를 ‘박씨네 집’ 클래스의 travel 함수와 다르게 동작하도록 만들기 -> 동일한 이름의 travel 함수를 houseKim 클래스 내에서 다시 구현하면 된다. 메서드 이름을 동일하게 다시 구현하는 것을 메서드 오버라이딩.
연산자 오버로딩
연산자를 객체끼리 사용할 수 있게 하는 기법 ex) + 연산자를 객체에 사용하게 되면 HousePark 클래스의 __add__라는 함수가 호출이 된다.
모듈
모듈이란 함수나 변수 또는 클래스 들을 모아 놓은 파일이다. 모듈은 다른 파이썬 프로그램에서 불러와 사용할 수 있게끔 만들어잔 파이썬 파일이라고도 할 수 있다.
사용방법 import 모듈 이름
or ‘from 모듈이름 import 모듈함수’ or ‘from mod1 import *’
if name == “main“:의 의미
mod1.py 파일에서 파일의 마지막 print 부분에
if __name__ == "__main__":
print(~~)
print(~~) ...
이런 식으로 해준다면, 모듈을 불러올 때는 if name == “main”: 이 거짓이 되어 실행이 안된다.
패키지
패키지는 도트(.)을 이용하여 파이썬 모듈을 계층적(디렉터리 구조)으로 관리할 수 있게 해준다. 특정 디렉터리의 모듈을 *를 이용하여 import할 때에는 해당 디렉터리의 init.py 파일에 __all__이라는 변수를 설정하고 import 할 수 있는 모듈을 정의해주어야 한다.
예외처리
오류 처리 기법 try 블록 수행 중 오류가 발생하면 except 블록이 수행된다.
try:
,,,
except [발생오류[as 오류 메시지 변수]]:
,,,
방법은 세가지
- try, except만 쓰는 방법 : 오류 종류에 상관없이 오류가 발생하기만 하면 except 블록을 수행
- 발생 오류만 포함한 except문 오류가 발생했을 때 except문에 미리 정해 놓은 오류 이름과 일치할 때만 except 블록을 수행한다는 뜻
- 발생 오류와 오류 메시지 변수까지 포함한 except문 이 경우는 2번째 경우에소 오류 메시지의 내용까지 알고 싶을 때 사용하는 방법
※ try .. finally
finally 절은 try문 수행 도중 예외 발생 여부에 상관없이 항상 수행.
ex) f.close
※ except FIleNotFoundError: pass와 같은 건 이 에러 발생시 오류를 그냥 회피하도록 하는 것. 많이 사용함 일부러 오류를 발생시키는 경우도 있음
raise라는 명령어 사용 ex) bird라는 클래스를 상속받는 자식 클래스는 반드시 fly라는 함수를 구현하도록 만들고 싶은 경우.
정규표현식
정규표현식은 따로 시간내서 공부하자..
참고자료
http://mwultong.blogspot.com/2006/12/python-join-list-array.html