뇌를 자극하는 파이썬 3 - 프로그램의 흐름 제어 1 ~ 6
by Yoonkh
뇌를 자극하는 파이썬 3
코딩으로의 초대
코딩의 즐거움 요소
-
무언가를 창조한다는 순수한 즐거움
-
다른 사람들에게 쓸모 있는 것을 만드는 기쁨
-
복잡한 퍼즐을 맞추듯 정교한 부품을 조립하여 완성하는 것에서 얻는 희열
-
항상 배우고 성장하는 즐거움
-
다루기 쉬운 매체를 이용해 작업하는 즐거움
코딩의 재미는 글로 다 표현이 불가능하다!!!
축구를 제대로 해보기전까지는 축구가 얼마나 재미있는지 알 수 없는 것과 같다고 할 수 있다
- 취미로서의 코딩의 장점: 코딩은 전기세 이외에는 돈이 들지 않는다!!!
문제 해결 능력을 키우는 코딩
-
이미 교육계에서 이루어진 여러 연구가 컴퓨터 프로그래밍이 논리적 추론 능력의 향상에 도움을 준다는 사실을 뒷받침하고 있다!
-
코딩을 즐겁게 하다보면 논리적 추론능력 뿐만 아니라 논리적 사고, 계획하는 능력, 일반적인 문제 해결능력이 저절로 향상된다!
우리가 페이스북 CEO처럼 수십조 원에 달하는 기업을 경영하고 있지는 않더라도 직장이나 삶에서 만나는 문제들을 풀어나가는데 코딩이 도움을 줄 수 있다!
아이디어를 현실로!
-
재미있는 이야기 거리가 있어도 그림을 그릴 줄 알아야 그 이야기를 만화로 만들 수 있고, 글을 쓸 줄 알아야 소설을 만들 수 있다!
-
아무리 좋은 아이디어가 있더라도 코딩을 할 줄 모른다면 그것을 실체화 할 수 없다!
코딩을 할 수 있는 과학도는 얼마든지 컴퓨터 시뮬레이션을 만들어 이론을 검증해 볼 수 있다!
보통의 발명가라면 아이디어가 떠올랐을 때 갖가지 재료를 구입해서 먼지 날리는 가공을 해야 하겠지만, 코드는 돈도 들지 않고 먼지도 날리지 않는 멋진 재료이다. 시간만 투자한다면 여러분의 아이디어를 살아 움직이는 것으로 만들 수 있다.
누구나 할 수 있는 코딩
컴퓨터가 세상에 처음 나왔을 때 얼마동안은 과학자와 기술자의 전유물이었지만, 오늘날에는 초등학생이나 식당주인처럼 누구나 배울 수 있다.
-
의식하지 못하고 코딩을 해왔을 수 있다. 워드프로세서나 스프레드 시트에서 매크로를 이용해서 작업을 자동화 시켜봤다면 그것이 프로그래밍이다!
-
2011년부터 영국에서는 ‘코딩은 새로운 라틴어’라는 캠패인을 통해 청소년들의 프로그래밍 교육을 확대하고 있다.
-
뉴욕의 블룸버그 시장도 자신의 2012년 새해 목표가 ‘코딩 익히기’라고 발표하여 사람들에게 코딩에 대한 관심을 불러 일으켰다!
코딩을 배우기 전에 읽는 컴퓨터 구조론
폰노이만 구조
천재 과학자 폰노이만은 1945년에 데이터와 명령어를 보관하는 기억 장치(MEMORY) 그리고 데이터의 가공을 담당하는 중앙처리장치(CPU)로 구성되는 현대 컴퓨터의 구조를 최초로 정의했다.
- 현재 우리가 사용하고 있는 거의 모든 전자 기기들은 폰노이만 구조를 이용하고 있다.
중앙 처리 장치 (CPU)
중앙처리장치는 컴퓨터에서 가장 중요한 장치라고 할 수 있다. 컴퓨터가 수행하는 계산은 모두 이 CPU를 통해서 이루어지기 때문이다.
- 자동차로 비유하면 엔진과 같다
*컴퓨터를 여러 연주자로 이루어진 오케스트라에 비한다면, 제어 장치는 이 오케스트라의 지휘자라고 할 수 있다. 제어장치와 산술 논리 장치는 다음과 같은 과정을 통햇 곡을 연주한다.
1. 먼저 제어장치가 기억 장치로부터 명령어를 가져온다(Fetch)
2. 제어장치는 가져온 명령어를 해독(Decode)한다.
3. 제어장치는 해독한 명령어에 따라 산술 논리 장치에 데이터를 옮기고 어떤 연산을 수행할지를 지시한다.
4. 산술 논리 장치는 제어 장치가 지시한 대로 계산을 수행(Execute)한다.
5. 그리고 수행한 결과를 기억 장치에 다시 저장(Store)한다.
ex) 어떤 CPU의 클럭 주파수가 1GHz라고 한다면, 그 CPU는 1초에 10억회의 명령 주기를 수행하는 성능을 지닌것이다!!!
기억 장치 (Memory)
기억장치는 데이터와 함께 명령어를 저장하는 역할을 한다. 메모리의 용량이 클 수록 더 많은 데이터와 명령어를 저장할 수 있고, 메모리가 빠르게 동작할수록 더 빠르게 CPU와 데이터와 명령어를 교환 할 수 있다.
입력/출력 장치
다양한 입출력 장치들은 ‘입출력 버스’를 통해 중앙 처리 장치, 기억 장치와 정보를 주고 받는다.
- 버스는 우리가 자주 이용하는 대중교통 수단인 바로 그 버스와 철자가 동일하지만 컴퓨터 과학에서 버스라고 하면 ‘컴퓨터의 정보 전송 회로’를 말한다.
중앙처리장치와 기억 장치, 그리고 입출력 장치는 버스로 연결되어 있다.
컴퓨터에서는 중앙 처리 장치, 기억 장치, 입출력 장치가 동일한 입출력 버스를 사용함으로써 빠르게 동작하는 중앙 처리 장치가 느려터진 입출력 장치 때문에 제 성능을 낼 수 없는 문제가 발생한다!
이문제를 해결하기 위해서 버스를 두가지로 나누었다!
-
먼저 CPU와 기억장치는 시스템 버스로 묶고, 그 다음 다양한 입출력 장치들은 입출력 버스로 묶어 CPU의 입출력 모듈에 연결한다.
-
4차선 고속도로에서 바깥쪽 차선은 저속차량이 이용하고 안쪽 차선은 고속차량이 달리도록 하는 것과 같다.
운영체제와 애플리케이션
운영체제는 애플리케이션에 API(Application Programming Interface)를 제공하여 운영체제가 제어하고 있는 하드웨어를 이용할 수 있도록 한다.
- 만약 운영체제가 없었다면 맥북 에어의 하드웨어 제어코드와 MS 서피스 하드웨어 제어코드를 일일이 애플리케이션안에 작성하는 대참사가 발생했을 것이다.
소프트웨어는 무엇으로 만드는가?
“허리를 바로 세우고 왼팔을 앞으로 내저으며 오른팔을 뒤로 내저어라. 동시에 몸의 중심을 앞으로 옮기며 왼발을 받침으로 삼고 오른발을 앞으로 내밀어라. 그리고 별도의 지시가 있기 전까지 이 행동을 계속하라.”
그냥 “앞으로 가”라고 하면 되는데 저런 식으로 사람에게 지시를 내리는 경우는 거의 없을 것이다.
- 컴퓨터는 어떤 일이든 세세하게 지시해주지 않으면 아무것도 하지 못한다.
이점을 역으로 이용해서 개발된 프로그래밍 언어가 어셈블리이다!!
어셈블리어는 복잡한 기계어 명령을 사람이 이해할 수 있는 기호나 단어로 바꿔 만든 것이다.
물론 컴퓨터는 “앞으로 가”라는 명령어를 전혀 이해하지 못한다. 컴퓨터는 0과 1만 알아듣기 때문이다!
- 프로그래머가 어셈블리어로 프로그램 코드를 작성한 후에는 컴파일러라는 소프트웨어를 이용하여 실행 파일을 만들어 냈는데, 이 실행 파일이 바로 프로그램이었다.
어셈플리어처럼 프로그램을 작성하기 위해 만들어진 인공 언어체계를 ‘프로그래밍 언어’라고 한다
-
컴파일러는 소스코드를 컴파일하여 실행파일로 만들기 때문에 프로그램을 실행하기 위해서는 ‘실행파일’만 있으면 되며, 소스코드는 전혀 필요하지 않다.
-
인터프리터는 소스코드를 미리 실행파일로 만드는 작업이 필요하지 않다. 소스코드를 실시간으로 기계어로 해석해서 실행해주기 때문이다.
데이터 다루기: 수와 텍스트와 비트
변수
변수는 데이터를 담는 메모리 공간이다!
여기에는 수를 담을 수도 있고, 글을 담을 수도 있다. 목록이나 이미지 데이터도 담을 수 있다.
>>> a = 2020
>>> a
2020
‘a = 2020’은 “a라는 이름의 변수를 만들고 2020을 해당변수에 입력하라”라는 의미의 코드이다.
변수 = 데이터를 담는 공간
수 다루기
정수
정수는 음의 정수, 0, 양의 정수를 모두 통틀어 일컫는 말이다!
- 파이썬에서는 메모리가 허용하는한, 무한대의 정수를 다룰 수 있다.
파이썬은 코드가 실행될 때 변수의 형식을 결정한다.
파이썬 인터프리터는 f = -3을 실행할 때가 되어서야 f가 정수라고 판단한다!
>>> f = -3
>>> type(f)
<<class 'int'>>
여러 가지 진법으로 수 출력하기
파이썬에서 16진수와 2진수로 표현하는 방법!
-
숫자를 16진수로 출력하려면 hex() 함수를 사용해야 한다.
-
숫자를 2진수로 출력하려면 bin() 함수를 사용해야 한다.
실수
파이썬은 실수를 지원하기 위해 부동 소수형을 제공한다.
부동소수형은 컴퓨터로 소수의 소수점을 표현하는 방식 중 하나이다.
-
부동 소수형은 8바이트만을 이용해서 수를 표현한다. 즉, 한정된 범위의 수만 표현할 수 있다.
-
디지털 방식으로 소수를 표현해야 하므로 정밀도에 한계가 있다.
다음과 같이 변수에 소수점이 있느 수를 대입하면 부동 소수형 변수가 만들어진다!!
>>> a = 3.14
>>> a
3.14
type() 함수를 사용해서 자료형을 확인하기!
>>> type(a) # a는 3.14
<<class 'float'>>
- ‘float’은 부동소수점을 나타낸다
부동 소수형의 8바이트
부동 소수형은 8바이트만을 이용해서 실수를 표현한다. 비록 8바이트만 가지고 수를 표현하지만, 굉장히 넓은 범위의 수를 다룬다.
- 파이썬의 부동 소수형은 IEEE754라는 표준을 따른다.
ex) 7.25를 정규화하여 가수 비트에 담는다면?
7은 2진수로 111, 0.25는 0.01이니 합치면 111.01이 된다. 이를 정규화하면 1.1101이 된다. 시작되는 1은 제거하고 담는다.
- 이러한 일련의 과정들을 ‘정규화’라고 한다.
한편, 8바이트(64비트) 부동 소수형의 경우 지수는 -1024부터 +1023까지의 값을 가질 수 있는데, 2의 보수로 이 값을 표현하면 비교 연산이 복잡해지기 때문에, 성능은 저하된다. 따라서 지수에는 실제 값에 1023을 더해 저장하는 바이어싱(biasing)을 사용한다.
- 결국 지수부에 담기는 비트에는 0보다 큰 양수만 담긴다.
math 모듈을 이용한 계산
파이썬 코드를 담고 있는 .py 확장자를 가진 파일을 ‘모듈(module)’이라고 한다. 파이썬은 인터프리터와 함께 매우 다양한 모듈을 제공한다.
- 모듈을 사용하려면 import구문을 이용한다
>>> import math
π와 e
원주율 π와 자연상수 e는 수학에서 사용되는 주요 상수이다
>>> math.pi # 원주율 π
3.141592 ...
>>> math.e # 자연상수 e
2.718818 ...
절대값, 버림과 반올림
함수 | 설명 | 비고 |
---|---|---|
abs() | 절대값 계산 함수 | 내장 함수 |
round() | 반올림 계산 함수 | 내장 함수 |
trunc() | 버림 계산 함수 | math 모듈 |
- 내장 함수(Built-in function)은 파이썬이 인터프리터에 함께 탑재해 놓은 함수로써 별도의 import 구문을 통하지 않고도 사용할 수 있는 함수이다.
abs() 함수의 사용 예 :
>>> abs(10)
10
>>> abs(-10)
10
round() 함수의 사용 예 :
>>> round(1.4)
1
>>> round(1.5)
2
trunc() 함수는 1.4, 1.5, 1.9를 모두 1로 만든다. trunc() 함수는 앞의 두 함수와는 달리 내장 함수가 아니기 때문에 사용할 때 ‘math.’를 붙여야 한다.
trunc() 함수의 사용 예 :
>>> import math
>>> math.trunc(1.4)
1
>>> math.trunc(1.5)
1
>>> math.trunc(1.9)
1
팩토리얼
팩토리얼은 1부터 어떤 양의 정수 n까지의 정수를 모두 곱한 것을 말한다. 예를 들어 5팩토리얼을 수식을 나타내면 다음과 같다.
5! = 5x4x3x2x1
- math 모듈에서 제공하는 팩토리얼 함수의 이름은 factorial()이다.
함수 | 설명 |
---|---|
factorial() | 팩토리얼 계산 함수 |
도와 라디안
도(degree)는 원을 360도로 표현한 것이고, 라디안(radian)은 반지름의 1인 원에서 호의 길이가 1인 부채꼴의 각을 기본단위로 삼아 2π로 표현한 것이다. 즉 360도 = 2π 인 것이다!
삼각 함수
math 모듈에서 제공하는 삼각함수 목록
함수 | 설명 |
---|---|
cos() | 입력된 라디안에 대한 코사인 값을 계산 |
sin() | 입력된 라디안에 대한 사인 값을 계산 |
tan() | 입력된 라디안에 대한 탄젠트 값을 계산 |
acos() | cos()의 역함수 |
asin() | sin()의 역함수 |
atan() | tan()의 역함수 |
제곱과 제곱근
파이썬으로 제곱을 계산한다면 다음과 같이 가능하다
>>> 3*3
9
>>> 3*3*3
27
텍스트 다루기
컴퓨터는 수를 계산하기 위해 만들어진 기계이다.
이 수 기게를 이용해서 컴퓨터 과학자들이 글을 다루는 방법을 고안해 냈는데, 각 문자마다 번호를 붙이고 메모리에 저장하거나 계산을 할 때에는 수로 처리하고 모니터나 프린터에 출력할 때는 사람이 아는 문자로 출력하는 방식이다.
파이썬에서는 텍스트를 다루는 자료형으로 String을 제공한다. String은 영어로 끈, 줄 등의 뜻을 가지고 있으므로 문자를 끈으로 가지런히 묶어놓는 것으로 이해하면 된다.
문자열 메소드
순서열로부터 물려받은 기능외에도, 문자열은 다양한 기능의 함수를 자체적을 탑재하고 있다.
내장 함수들과는 달리 이런 함수는 문자열 자료형 안에 들어 있다. 이렇게 특정 자료형이 갖고 있는 함수를 메소드(Method)라고 한다.
수에서 텍스트로, 텍스트에서 수로
print("첫 번째 수를 입력하세요. : ")
a = input()
print("두 번째 수를 입력하세요. : ")
b = input()
result = int(a) * int(b)
print("{0} * {1} = {2}".format(a, b, result))
- 실행 결과
>input_multiply.py
첫 번째 수를 입력하세요 :
5
두 번째 수를 입력하세요 :
4
5 * 4 = 20
파이썬은 숫자 형식의 생성자 안에 문자열을 해당 형식으로 변환하는 기능을 탑재했다.
비트 다루기
컴퓨터는 원래 0과 1의 비트 데이터만을 다루는 기계이다. 하지만 파이썬에서 다루는 데이터의 기본 단위는 ‘바이트(Byte)’이다. 1바이트는 비트를 무려 8개나 담을 수 있는 크기다.
비트 수준에서 데이터를 가공해야 하는 경우도 종종 생기는데 비트 연산자는 바로 이를 위한 연산자이다!
시프트 연산자
시프트 연산자(Shift Operator)는 비트를 왼쪽이나 오른쪽으로 이동시키는 기능을 한다.
비트 논리 연산자
논리 연산은 참 또는 거짓의 진리 값을 피연산자로 하는 연산이다. 비트 논리 연산(Bitwise Logical Operation)은 데이터의 각 비트에 대해 수행하는 논리 연산이다. 파이썬에서 제공하는 비트 논리 연산자는 네 가지가 있다.
연산자 | 이름 |
---|---|
& |
논리곱(AND)연산자 |
| |
논리합(OR)연산자 |
^ |
배타적 논리합(XOR)연산자 |
~ |
보수(NOT)연산자 |
- 비트 논리 연산자는 bool 형식 외에도 정수 계열 형식의 피연산자에 대해서도 사용 할 수 있다.
데이터 다루기: 리스트와 튜플과 딕셔너리
리스트
리스트(List)는 이름에서도 알 수 있듯이 데이터의 목록을 다루는 자료형이다.
단일 데이터가 명함이라면, 리스트는 명함을 모아두는 명함집이라고 할 수 있다.
명함집에 명함을 꽂아 넣을 수 있는 슬롯(Slot)이 있는 것처럼, 리스트들도 슬롯이 있다.
리스트의 각 슬롯에 꽂혀있는 개별 데이터를 일컫어 요소(Element)라고 한다.
리스트 메소드
메소드 | 설명 |
---|---|
append() | 리스트의 끝에 새 요소를 추가한다. |
extend() | 기존 리스트에 다른 리스트를 이어 붙입니다. + 연산자와 같은 기능을 한다고 할 수 있다. |
insert() | 첨자로 명시한 리스트 내의 위치에 새 요소를 삽입한다. |
remote() | 매개변수로 입력한 데이터를 리스트에서 찾아 발견한 첫 번째 요소를 제거한다. |
pop() | 리스트의 마지막 요소를 뽑아내어 리스트에서 제거한다. |
index() | 리스트 내에서 매개변수로 입력한 데이터와 일치하는 첫 번째 요소의 첨자를 알려준다. |
count() | 매개변수로 입력한 데이터와 일치하는 요소가 몇 개 있는지 센다. |
sort() | 리스트 내의 요소를 정렬한다. |
reverse() | 리스트 내 요소의 순서를 반대로 뒤집는다. |
튜플
리스트는 sort()메소드를 이용해 요소의 순서를 정렬하지만 튜플은 변경이 불가능하므로 아예 해당 메소드가 제공되지 않는다. 새로운 요소를 추가하거나 삽입할 수 있고, 기존 요소를 삭제할 수도 있지만 튜플은 이러한 작업을 허용하지 않는다.
튜플 = 변경이 불가능한 자료형!
- 튜플도 리스트와 문자열처럼 순서열 자료형이기 때문에 대괄호를 이용한 참조 연산과 슬라이싱, 튜플간 결합 등의 연산이 가능하다!
ex) 슬라이싱 예:
>>> a = (1, 2, 3, 4, 5, 6)
>>> a[:3]
(1, 2, 3)
>>> a[4:6]
(5, 6)
ex) + 연산자 튜플 결합의 예:
>>> a = (1, 2, 3)
>>> b = (4, 5, 6)
>>> c = a + b
>>> a
(1, 2, 3)
>>> b
(4, 5, 6)
>>> c
(1, 2, 3, 4, 5, 6)
패킹과 언패킹!
다음과 같이 여러가지 데이터를 튜플로 묶는 것을 튜플 패킹(Tuple Packing)이라고 한다!
>>> a = 1, 2, 3
>>> a
(1, 2, 3)
그리고 다음과 같이 튜플의 각 요소를 여러 개의 변수에 할당하는 것을 튜플 언패킹(Tuple Unpacking)이라고 한다!
>>> one, two, three = a
>>> one
1
>>> two
2
>>> three
3
- 튜플의 언패킹을 활용하면 여러 개의 변수에 한번에 할당을 수행할 수 있다!
튜플 메소드
튜플은 변형이 불가능한 자료형이라서 제공하는 메소드가 index()와 count() 두개뿐이다!!!
메소드 | 설명 |
---|---|
index() | 매개변수로 입력한 데이터와 일치하는 튜플 내 요소의 첨자를 알려준다! |
count() | 매개변수로 입력한 데이터와 일치하는 요소가 몇 개 있는지 센다! |
딕셔너리
딕셔너리(Dictionary)는 사용법 측면에서 보면 리스트와 비슷하다고 볼 수 있다!
- 리스트처럼 첨자를 이용해서 요소에 접근하고, 또 그 요소를 변경 할 수도 있다!
딕셔너리의 첨자는 키(Key)라고 하고, 이 키가 가리키는 슬롯에 저장되는 데이터를 값(Value)라고 한다!
딕셔너리는 키-값의 쌍으로 구성된다.
- 딕셔너리는 키를 이용해서 단번에 데이터가 저장된 위치의 주소를 계산해내는데 이런 작업을 해싱(Hashing)이라고 한다!
프로그램 흐름 제어하기!
흐름 제어를 시작하기 전에
bool 자료형
bool은 True와 False 두 가지 값을 나타내는 자료형이다!
>>> a = 3 > 2
>>> a
True
>>> a = 2 > 3
>>> a
False
>>> type(a)
<<class 'bool'>>
논리 연산자
not, and, or는 참과 거짓을 다루는 논리 연산자이다!
흐름 제어문과 조건문
흐름 제어문은 흐름을 분기하거나 반복하기 전에 조건문의 결과가 참인지를 평가한다!
- bool 형식을 비롯해서 숫자, 문자열, 딕셔너리 등 다양한 객체가 사용된다
- False
- None
- 숫자 0 예) 0, 0.0등
- 비어있는 순서열: 예)",(),[]등
- 비어있는 딕셔너리: 예) {}
코드블록과 들여쓰기
코드블록(Code Block)은 여러 코드가 이루는 일정한 구역을 말하는데, 프로그래밍 언어마다 이것을 표현하는 방법은 각기 다르다!
비교 연산자
연산자 | 설명 |
---|---|
== | 양쪽에 위치한 피연산자가 서로 같으면 True, 그렇지 않으면 False이다! |
!= | 양쪽에 위치한 피연산자가 서로 다르면 True, 그렇지 않으면 False이다! |
> | 왼쪽에 위치한 피연산자가 오른쪽 피연산자보다 크면 True, 그렇지 않으면 False이다! |
>= | 왼쪽에 위치한 피연산자가 오른쪽 피연산자보다 크거나 같으면 True, 그렇지 않으면 False이다! |
< | 왼쪽에 위치한 피연산자가 오른쪽 피연산자보다 작으면 True, 그렇지 않으면 False이다! |
<= | 왼쪽에 위치한 피연산자가 오른쪽 피연산자보다 작거나 같으면 True, 그렇지 않으면 False이다! |
분기문
프로그램의 흐름을 가르는 문장을 일컬어 나눌 분, 갈림길 기, 분기문이라고 한다!
if문
if는 어떤 상황을 가정할 때 사용하는 말이다!
- ‘만약 ~라면’의 뜻을 갖고 있다. ‘만약 입력받은 수 a가 0이라면’처럼
if문은 참아니면 거짓으로 평가될 수 있어야한다.
>>> if 조건: # if 뒤에 흐름을 가를 조건이 위치하고, 그 뒤에 콜론(:)이 온다
>>> 명령1 # :뒤에는 들여쓰기로 이루어진 코드블록이 온다. 이 코드블록은 if문의 조건이 True일 경우 실행된다!
>>> 명령2
>>> else: # if문의 조건을 충족하지 않을 때, 즉 조건 평가의 결과가 False일 때의 흐름은 else로 향한다!. else뒤에도 코드블록이 오므로 콜론(:)이 위치해야 한다.
>>> 명령1
>>> 명령2
*ex) if else의 예제:
import sys
print('수를 입력하세요 : ')
a = int(input())
if a == 0 :
print('0은 나눗셈에 이용할 수 없습니다.')
sys.exit(0)
print('3 /', a, '=', 3/a)
-
파이썬 프로그램을 종료하는 exit() 함수를 사용하기 위해 sys패키지를 임포트한다
-
a가 0인 경우에 경고 메세지를 출력한 뒤 프로그램을 종요시킨다.
ex) elif는 else if를 줄여 만든 파이썬 키워드 이다.
print('요일(월~일)을 입력하세요 : ')
dow = input()
if dow == '월' : # 첫번째 조건은 항상 if로 시작
print('Monday')
elif dow == '화' : # 두번째 조건부터는 elif를 이용!
print('Tuesday')
elif dow == '수' :
print('Wednesday')
elif dow == '목' :
print('Thursday')
elif dow == '금' :
print('Friday')
elif dow == '토' :
print('Saturday')
elif dow == '일' :
print('Sunday')
else : # 마지막의 else는 생략가능!
print('잘못 입력된 요일입니다.')
반복문
루프문(Loop Statement)이라고도 한다.
while문
while문은 코드의 흐름을 반복시킬 수 있는 파이썬의 코드이다.
ex) while
>>> while 조건:
>>> 코드블록
- while키워드가 먼저 위치하고 그 다음에 조건이 오게 된다.
조건뒤에는 코드블록을 위치시켜서 전에 콜론(:)이 있어야 한다.
while이 영어로 ‘~하는동안’이라는 뜻이므로 while코드를 읽을 때에는 ‘조건이 참인 동안’이라고 해석하면 된다!
print('몇 번 반복할까요? : ')
limit = int(input())
count = 0
while count < limit :
count = count + 1
print('{0}회 반복.'.format(count))
print('반복이 종료되었습니다.')
for 문
for문은 조건을 평가하는 것이 아니라 순서열을 순회하다가 순서열의 끝에 도달했는지를 본다
ex) for
>>> for 반복변수 in 순서열:
>>> 코드블록
- for문에서 사용하는 순서열은 리스트, 튜플, 심지어 문자열 등 어떤 것을 사용해도 괜찮다!
for문은 순서열의 각 원소를 처음부터 차례로 순회하면서 반복변수에 담아낸다.
for s in '뇌를 자극하는 파이썬' :
print(s)
ex) 중첩 for문
for i in range(1, 6) :
for j in range(i) : # 바깥의 for문에서 입력한 반복변수 i가 멈춤값이다!
print( "*", end = "", ) # end=""을 매개변수로 입력하면 줄바꿈을 출력하지 않는다!
print() # 아무것도 입력하지 않으면 줄바꿈만 출력
continue와 break로 반복문 제어하기
파이썬에서 continue문은 반복문이 실행하는 코드블록의 나머지 부분을 실행하지 않고 다음 반복으로 건너가도록 흐름을 조정한다.
for i in range(10) :
if i % 2 == 1 :
continue # i가 홀수일 때 코드블록의 나머지 부분을 실행하지 않고 다음 반복으로 바로 건너간다.
print(i) # continue가 실행되는 경우에는 이 코드는 실행되지 않는다.
Subscribe via RSS