Post on 22-Jan-2017
조건문의 끝블록문의 시작
조건문
If
1. if ~ elif ~ else
color = input(“색상을 영문으로 입력하세요 : “)
if color == ‘blue’:
print(“파란색을 입력하셨네요”)
elif color ==‘red’:
print(“빨간색을 입력하셨네요”)
else :
print(color + “색을 입력하셨네요”)
특정 조건에 따라 분기를 하기 위해 제공되는 제어문else if => elif ( else if는 syntax error!)파이썬에는 Swich-case문이 없습니다
제어문 키워드
들여쓰기로 블록문 대체
들여쓰기로 블록문 대체
조건문
Loop
1. While
color =‘’
while color != ‘blue’ and color != ‘red’ :
color = input(“색상을 영문으로 입력하세요 : “)
if color == ‘blue’:
print(“파란색을 입력하셨네요”)
elif color ==‘red’:
print(“빨간색을 입력하셨네요”)
else :
print(color + “색을 입력하셨네요”)
print (“프로그램을 종료 합니다”)
특정 조건에 만족할 때까지 루프를 돌릴때 주로 사용무한 루프를 돌릴 때 주로 사용
조건문의 끝블록문의 시작
반복문 키워드
열거형 변수가 하나씩 대입되는 변수
반복문 키워드
Loop
2. for
landvibe = ‘재승’, ‘민승’, 지선’
for member in landvibe:
print(member)
특정 범위만큼 루프를 돌릴때 주로 사용
열거형 변수(tuple, list, …)
for문과 range() 함수
1. range()
>>> for x in range(5) :
… print(x, end=‘ ‘)
0 1 2 3 4 # 5는 출력되지 않습니다
>>> type(range(5))
<class ‘range’>
>>> range(5)
range(0, 5) # 그냥 쓰면 range 타입입니다>>> list(range(5))
[0, 1 ,2, 3 ,4 ] # list() 로 형변환을 해주면 해당 범위의모든값이# 출력됩니다
순차적인 숫자로 이루어진 리스트를 쉽게 만드는 방법파이썬 기본 내장 함수range(start, stop [, step])
기본 예제
>>> list(range(5, 10))
>>> list(range(0, 10, 2))
>>> list(range(5, 0, -1))
>>> tuple(range(5, 0, -1))
>>> list(range(0, 10, -1))
퀴즈!
for문과 range() 함수
>>> list(range(5, 10))
[5, 6, 7 ,8 ,9] # 5부터 10까지 1씩증가하는 리스트
>>> list(range(0, 10, 2))
[0, 2, 4, 6, 8] # 0부터 10까지 2씩증가하는 리스트
>>> list(range(5, 0, -1))
[5, 4, 3, 2, 1] # 5부터 0까지 -1씩 증가하는 리스트
>>> tuple(range(5, 0, -1))
(5, 4, 3, 2, 1) # 5부터 0까지 -1씩 증가하는 튜플
>>> list(range(0, 10, -1))
[] # 0부터 10까지 -1씩증가하면 무한루프# 이럴땐 빈리스트가 반환!
# 에러가 나지 않음!!
정답
for문과 range() 함수
break, continue, pass
1. break
특정한 조건에 의해, 수행하고 있는 루프를 중단한다
for i in range(10) :
if i == 5:
break;
print( i, end=‘ ‘)
2. continue
수행하고 있는 루프문만 중단하고 다음 루프로 넘어간다
for i in range(10) :
if i == 5:
continue;
print( i, end=‘ ‘)
결과 : 0 1 2 3 4
결과 : 0 1 2 3 4 6 7 8 9
break, continue, pass
3. pass
아무 일도 하지 않는다
for i in range(10) :
if i == 5:
pass
print( i, end=‘ ‘)
결과 : 0 1 2 3 4 5 6 7 8 9
헤에!?아무일도
안한다고요?
break, continue, pass
def prev_funcion():
pass
class pre_class():
pass
def prev_control():
if x == 3:
pass
코드 설계 시 제어문, 함수, 클래스를 미리 만들어 놓을 때 사용합니다
3. pass
Comprehensions
짧고 간결한 코드로 List, Set, Dict와 같은 자료구조를 생성할 수 있는 문법
square_list = []
for x in range(11):
square_list.append(x*x)
print(square_list)
1. List
for 문으로 [0, 1, 4 , 9, 16, 25, 36, 49, 64, 81,100] 의
데이터를 생성해보자
square_list = [x*x for x in range(10)]
Comprehensions를 사용하면?
Comprehensions
>>> pairs = []
>>> old_boys = [‘재승’, ‘민승’, ‘상화’]
>>> young_boys = [‘성현’, ‘양욱’, ‘재형’]
응용
[‘재승’, ‘민승’, ‘상화’], [‘성현’, ’양욱’, ’재형’] 두개의 리스트를 tuple로 짝지어 봅시다.
중첩 for 문 사용
>>> for ob in old_boys :
for yb in young_boys:
pairs.append( (ob,yb) )
>>> pairs
[(‘재승’, ‘성현’), (‘재승’, ‘양욱’), (‘재승’, ‘재형’),
(‘민승’, ‘성현’), (‘민승’, ‘양욱’), (‘민승’, ‘재형’),
(‘상화’, ‘성현’), (‘상화’, ‘양욱’), (‘상화’, ‘재형’)]
Comprehensions
>>> pairs = []
>>> old_boys = [‘재승’, ‘민승’, ‘상화’]
>>> young_boys = [‘성현’, ‘양욱’, ‘재형’]
응용
[‘재승’, ‘민승’, ‘상화’], [‘성현’, ’양욱’, ’재형’] 두개의 리스트를 tuple로 짝지어 봅시다.
Comprehension 사용
>>> pairs = [ (x,y) for x in old_boys for y in young_boys]
>>> pairs
[(‘재승’, ‘성현’), (‘재승’, ‘양욱’), (‘재승’, ‘재형’),
(‘민승’, ‘성현’), (‘민승’, ‘양욱’), (‘민승’, ‘재형’),
(‘상화’, ‘성현’), (‘상화’, ‘양욱’), (‘상화’, ‘재형’)]
Comprehensions
>>> pairs = []
>>> old_boys = [‘재승’, ‘민승’, ‘상화’]
>>> young_boys = [‘성현’, ‘민승’, ‘재형’]
응용
[‘재승’, ‘민승’, ‘상화’], [‘성현’, ’민승’, ’재형’] 두개의 리스트를 tuple로 짝지어 봅시다.
중첩 for 문 사용
>>> for ob in old_boys :
for yb in young_boys:
if ob != yb:
pairs.append( (ob,yb) )
>>> pairs
[(‘재승’, ‘성현’), (‘재승’, ‘민승’), (‘재승’, ‘재형’),
(‘민승’, ‘성현’), (‘민승’, ‘재형’),
(‘상화’, ‘성현’), (‘상화’, ‘민승’), (‘상화’, ‘재형’)]
Comprehensions
>>> pairs = []
>>> old_boys = [‘재승’, ‘민승’, ‘상화’]
>>> young_boys = [‘성현’, ‘민승’, ‘재형’]
응용
[‘재승’, ‘민승’, ‘상화’], [‘성현’, ’민승’, ’재형’] 두개의 리스트를 tuple로 짝지어 봅시다.
Comprehension 사용
>>> pairs = [ (x,y) for x in old_boys for y in young_boys if x != y]
>>> pairs
[(‘재승’, ‘성현’), (‘재승’, ‘민승’), (‘재승’, ‘재형’),
(‘민승’, ‘성현’), (‘민승’, ‘재형’),
(‘상화’, ‘성현’), (‘상화’, ‘민승’), (‘상화’, ‘재형’)]
Comprehensions
>>> a = {x for x in ‘abrdabrdabrd’ if x not in ‘abc’}
>>> a
2. Set
예제
{‘r’, ‘d’}
>>> a = { x : x*x for x in (2, 4, 6)}
>>> a
3. Dict
예제
{ 2:4, 4:16, 6:36 }
function
함수 : 특정 행위에 대해 기술한 소스 코드
클래스 : 특정 행위와 상태를 담을 수 있는 객체를 생성하기 위한 명세서
모듈 : 함수, 클래스 등을 포함하여 독립적인 파일(.py)로 저장하여 언제든지호출하여 재사할 수 있는 공통 소스 코드들의 집합
Don’t Repeat Yourself!
>>> “같은 소스를 반복해서 작성하지 말라”
소스 재사용!?
function
함수 : 특정 행위에 대해 기술한 소스 코드
클래스 : 특정 행위와 상태를 담을 수 있는 객체를 생성하기 위한 명세서
모듈 : 함수, 클래스 등을 포함하여 독립적인 파일(.py)로 저장하여 언제든지호출하여 재사할 수 있는 공통 소스 코드들의 집합
Don’t Repeat Yourself!
>>> “같은 소스를 반복해서 작성하지 말라”
소스 재사용!?
반환값
인자값
함수명
함수 정의 키워드
function
>>> def drink_water(name):
print(name + “(이)가 물을 마십니다”)
return name
>>> drink_person = drink_water(“양욱”)
양욱(이)가 물을 마십니다>> > drink_person
양욱>>> type(drink_water(“양욱”))
양욱(이)가 물을 마십니다<class ‘string’>
>>> type(drink_water)
<class ‘function’>
함수의 3요소 : 함수명, 인자값, 반환값
1. 함수 정의
function
>>> def drink_water(name):
print(name + “(이)가 물을 마십니다”)
>>> drink_water(“양욱”)
양욱(이)가 물을 마십니다>>> type(drink_water(“양욱”))
양욱(이)가 물을 마십니다<class ‘NoneType’>
>>> print(drink_water(“양욱”))
양욱(이)가 물을 마십니다None
반환값이 없을때 : None
1. 함수 정의
=> Object!!!!
function
>>> def drink_water(name=“양욱”):
print(name + “(이)가 물을 마십니다”)
>>> drink_water()
양욱(이)가 물을 마십니다>>> dring_water(‘민승’)
민숭(이)가 물을 마십니다
def func_name(arg=value)
2. Default Argument Value
function
drink_water 함수를 정의해 봅시다!
>>> drink_water(3)
문자열을 입력해주세요!
>>> drink_water()
인자값을 입력해주세요!
>>> drink_water(‘건희’)
건희(이)가 물을 마십니다!
간단한 예외처리를 해봅시다!
2. Default Argument Value
정답!!!
>>> def drink_water(name=None):
if name == None:
print(“인자값을 입력해주세요!”)
elif type(name) != str :
print(“문자열을 입력해주세요!”)
else :
print(name + “(이)가 물을 마십니다”)
function
>>> def my_car( manufacturer, seats=4, type=‘세단’):
pirnt(‘내 차는’, manufacturer, ‘에서 제작된’, str(seats), ‘인승’, type, ‘이다’)
>>> my_car(‘현대’)
내 차는 현대 에서 제작된 4 인승 세단 이다.
>>> my_car(manufacturer=‘현대’)
내 차는 현대 에서 제작된 4 인승 세단 이다.
>>> my_car(manufacturer=‘기아’, type=‘SUV’)
내 차는 기아 에서 제작된 4 인승 SUV이다.
>>> my_car(type=‘SUV’, manufacturer=‘기아’)
내 차는 기아 에서 제작된 4 인승 SUV이다.
• positional : 위치 인자값
• keyword : default value를 가지는 인자값
3. Keyword Argument
function
>>> def my_car( manufacturer, seats=4, type=‘세단’):
pirnt(‘내 차는’, manufacturer, ‘에서 제작된’, str(seats), ‘인승’, type, ‘이다’)
>>> my_car(‘아우디’, 2 , ‘스포츠카’)
내 차는 아우디 에서 제작된 2 인승 스포츠카 이다>>> my_car(‘아우디’, seats=2)
내 차는 아우디 에서 제작된 2 인승 세단 이다>>> my_car(‘아우디’, type=스포츠카)
내 차는 아우디 에서 제작된 4 인승 스포츠카 이다>>> my_car()
TypeError
>>> my_car(manufacturer=‘아우디’, 2)
SyntaxError
>>> my_car(“현대”, manufacturer=‘아우디’)
TypeError
>>> my_car(“현대”, color=“흰색”)
TypeError
3. Keyword Argument
function
>>> def landvibe_member(name , *members, **landvibe_info):
print(“땅울림 회장 이름 :”, name)
print(“회원들 목록은 아래와 같습니다.”)
for member in members:
print(member, end=“ “)
print(‘-’ * 40)
for key in landvibe_info.keys():
print(key, “:”, landvibe_info[key])
*args : 튜플형 데이터 (리스트x)
**args : 사전형 데이터
4. Arbitrary Argument Lists (가변 인자 리스트)
function
>>> landvibe_member(“양민승”)
4. Arbitrary Argument Lists (가변 인자 리스트)
땅울림 회장 이름 : 양민승회원들 목록은 아래와 같습니다.
----------------------------------------
>>> members = “규정”, “건희”, “도완”
>>> landvibe_member(“양민승”, memebers)
땅울림 회장 이름 : 양민승회원들 목록은 아래와 같습니다.
규정 건희 도완----------------------------------------
function
4. Arbitrary Argument Lists (가변 인자 리스트)
>>> members = “규정”, “건희”, “도완”
>>> landvibe_member(“양민승”, memebers, 영문이름=‘landvibe’, 우승횟수=“5번”)
땅울림 회장 이름 : 양민승회원들 목록은 아래와 같습니다.
규정 건희 도완----------------------------------------
영문이름 : landvibe
우승횟수 : 5번
function
4. Arbitrary Argument Lists (가변 인자 리스트)
>>> def landvibe_member(*members):
print(members)
>>> tuple_members = “규정”, “건희”, “도완”
>>> list_members = [“규정”, “건희”, “도완”]
>>> landvibe_member(tuple_members)
([“규정”, “건희”, “도완”], )
*args : 튜플형 데이터 (리스트x)
(“규정”, “건희”, “도완”)
>>> landvibe_member(list_members)
과제!!!
9월 23일 (금) 까지 제출해주세요~
kimkh6554@gmail.com
BeakJoon Online Judge
https://www.acmicpc.net/