본문으로 바로가기

Day-3 반복문(while), 실수 판별법, 함수

category Programming/Python 2017. 10. 2. 11:27

1. 반복 : loop

 

반복문은 while문, for문이 있다. 이번 챕터에서는 while에 대해서 자세하게 알아본다.

 

1) 기본형태

 

while 표현식 :

<들여쓰기> 명령어

...

 

표현식에 들어가는 문장은 Ture 혹은 False 둘 중 하나의 값으로 나와야한다.

 

if vs while

 

if문

 

 

if문은  표현식의 참과 거짓을 판단해 명령어를 한번만 실행한다.

 

 

while문

 

 

whlie문은 표현식이 거짓이될 때까지 계속 반복해서 실행하는 반복문이다.

while True: 는 계속 True이기 때문에 무한에 "True"라는 문장이 나온다. 이것을 무한루프라고 한다. 필자는 강제로 무한루프를 종료해서 KeyboardInterrup가 발생했다. KeyboardInterrup는 Ctrl + C를 누르면 발생한다.

 

[실습] 1부터 계속 1씩 무한번 더하는 프로그램을 작성하시오

 

<< 나쁜 예>>

 

 

1. while 문이 참이기 때문에 반복문을 실행한다.

2. 첫 번째 줄을 실행하면 count = 1이다.

3. 두 번째 줄을 실행하면 count += 1이다. 따라서 count = 2가 된다.

4. 세 번째 줄을 실행하면 print(count)를 해서 2가 출력된다.

5. while문이 참이기 때문에 다시 첫 번째 줄을 실행한다.

6. 첫 번째 줄을 실행하면 count = 1이다.

7. ....

 

위와 같이 계속해서 count = 1로 초기화되기 때문에 1부터 계속 1씩 더하는것이 아니라 2가 계속 출력된다.

 

<< 좋은 예>>

 

 

 

1. count = 1을 대입한다.

2. while 문이 참이기 때문에 반복문을 실행한다.

3. print(count)이기 때문에 1을 출력한다.

4. count += 1로 인해 count = 2가 된다.

5. while 문이 참이기 때문에 반복문을 실행한다.

6. print(count)이기 때문에 2를 출력한다.

7. count += 1로 인해 count = 3이 된다.

8. ....

 

위와 같이 while문 전에 count =1을 선언해 count가 반복문이 실행될때마다 초기화되지 않게 하였다.

 

[실습] 1~100까지의 합을 구하라.

 

 

<<무한 loop 사용 X>>

 

 

<<무한 loop 사용 O>>

 

 

무한루프를 종료하는 대표적인 방법은 루프속에 if명령어와 break 명령어를 사용해서 무한루프를 탈출하는 것이다.

 

[실습] 1~100사이의 짝수만 출력하세요.

 

 

count %2는 홀수면 1, 짝수면 0이 나온다. 즉, 홀수이면 if문이 참이고 짝수이는 if문이 거짓이라 else문이 실행되는 구조이다.

 

2. 예외 처리

 

문자열 값에 대한 예외 처리를 알아보자.

 

https://docs.python.org/3/library/stdtypes.html#string-methods

 

위 URL은 문자열 처리 관련 method 설명이 잘 되어있다.

 

아래 method는 Return 값이 Treu/False 둘 중 하나로 나온다.

 

str.isalnum() --- str이 숫자와 영어로 이루어진 문자열인지 아닌지 판단한다. 숫자 또는 영어로만 이루어진 str값도 참으로 나온다.

str.isalpha() --- str이 영어로 이루어진 문자열인지 아닌지 판단한다.

str.isdecimal() --- str이 정수로 이루어진 문자열인지 아닌지 판단한다.

 

 

 

예를들어 사용자로부터 정수 입력을 꼭 받아야 하는 상황은 str.isdecimal()을 사용하면 된다.

 

 

3. 실수 판별법

 

문자안의 실수는 실수인지 정수인지 구별할 수 없다. 즉, built-in 함수가 없기 때문에 프로그래머가 직접 구현해서 사용해야 한다.

 

1) 실수의 형태는 일반적으로 아래와 같다.

- 실수.실수

 

2) 실수 판별법에 사용할 3개의 함수에 대해 알아보자.

- split : sep를 기준으로 list type으로 나눠준다.

- count : 개수를 셀수 있다. '.'이 하나만 나오면 실수임을 추측할 수 있다.

- partition : 되돌려주는 리턴값의 개수가 무조건 3개의 값을 리턴해준다. 중복된 문자가 있어도 한번만 분할을 해준다.

 

잘 쓰지 않는 변수, 쓸모 없는 변수의 이름은 _로 한다.

 

 

a와 c가 decimal이면 실수이다

 

4. 함수

 

f(x) = 2x + 3

f  = 이름, x = 파라미터, 인자, 2x + 3 = 정의

 

1) 함수의 정의

 

f(x) = 2x + 3

 

f(1) = 5

f(2) = 7

 

 

def 함수이름(인자1, 인자2, ...): 형식으로 함수를 정의할 수 있다.

 

리턴이 있으면 실행결과를 돌려주고, 리턴이 없으면 실행결과를 돌려주지 않는다.

 

2) 함수의 시작과 종료

 

시작 : 함수를 호출 했을 때

종료 : 1. 더 이상 실행할 명령어가 없는 경우

   2. 리턴 문장을 만났을 때

 

def  f(x):

return 2 * x + 3

print("hello")

 

위 함수를 호출했을 때 return은 되지만 "hello"라는 문자열을 출력되지 않는다.

 

 

함수를 호출할 때 인자가 없다면 x=0, y=0을 대입해서 실행하라는 뜻이다.

 

[실습] 함수를 정의해서 실수를 판별할 수 있는 함수를 만들어라.

 

 

위와 같이 함수를 만들면 실수를 판별할 수 있다.

 

하지만 파이썬을 많이 사용하다보면 숫자.숫자 이외 형태도 파이썬은 실수로 인식할 때가 있다.

 

 

위와 같은 형태도 실수로 인식한다.  공백이 여러개와도 실수로 인식하지만 아직 구현하기 어렵기 때문에 공백이 하나만 왔을 때를 가정하고 구현해보자.

 

 

위와 같이 구현하면 공백이 들어갔을때의 실수 판별법이 가능하다.

'Programming > Python' 카테고리의 다른 글

Day-2 파이썬 입/출력, 함수, 변수, 분기문  (0) 2017.09.27
Day-1 Python 설치 및 표현식  (0) 2017.09.23