728x90
반응형

2019/01/29 - [Language/Python] - [Python 따라하기]1. Python 설치하기

2019/02/05 - [Language/Python] - [Python 따라하기]2. 자료형_part 1(String, Int,Float, List)

2019/02/12 - [Language/Python] - [Python 따라하기]3. 자료형_part2(Tuple,Set,Dictionary)

2019/02/19 - [Language/Python] - [Python 따라하기]4.조건문

2019/02/26 - [Language/Python] - [Python 따라하기]5. 반복문(For, While, break, continue)

2019/03/05 - [Language/Python] - [Python 따라하기]6. 함수만들기(def, print, format)

2019/03/12 - [Algorithm/Python] - [Python 따라하기]7.파일 입출력 (File I/O)


클래스를 사용하는 이유

클래스를 사용하지 못하면 프로그램을 만들지 못하는 것은 아니다. 클래스를 사용하지 않더라도 충분히 좋은 프로그램을 만들 수 있다.

하지만 클래스를 사용할 수 있다면 조금 더 편한 프로그램을 만들 수 있을 뿐이다.

예를 들어 계산기가 있다고 하자. 계산기에서 연산을 할 때 값들을 계속 누적해서 진행해야 한다. 그러기 위해서는 계산기당 하나의 전역변수와 하나의 함수가 필요하다. 하나의 계산기가 있는 것이라면 문제가 없지만 만약 여러 개의 계산기를 동시에 사용을 해야 한다면 어떻게 해야할까? 계산기가 늘어날 수록 전역변수와 함수가 계속 추가되어야 한다. 그러면 추가될수록 메모리를 많이 차지하게 될 것이다.

하지만 클래스를 사용한다면 하나의 변수와 함수만으로도 독립적인 값들을 유지할 수 있다.

클래스와 객체

클래스와 객체의 관계는 다음과 같이 설명 할 수 있다.

* 신입생 -> 클래스(class)
* 학생1,학생2, .... -> 객체(object)

클래스란 똑같은 무엇인가를 계속해서 만들어낼 수 있는 하나의 틀 같은 것이고(신입생), 객체란 클래스에 의해서 만들어진 것을 뜻한다.

클래스에 의해서 만들어진 객체는 서로 독립적인 성격을 가진다. 하나의 학생의 학적사항이 변동되더라도 다른 학생들에겐 영향을 주지 못하는 것과 같다. 다음은 하나의 간단한 클래스 예시이다.


위의 클래스는 아무런 기능을 가지고 있지 않다. 그래도 이 클래스는 객체를 생성할 수 있다. 다음은 객체를 만드는 방법이다.


학생정보 클래스 만들기

본격적으로 신입생들을 위한 학생정보를 만들어보도록 하자.

학생정보에 들어갈 수 있는 변수로는 이름, 학번, 성별 그리고 듣는 과목들이 있을 것이다. 학생정보에 들어갈 수 있는 함수들로는 각 변수를 설정하는 함수와 총 듣는 과목의 수를 반환해주는 함수, 과목을 추가해주는 함수가 있다고 하자. 다음은 학생정보를 담고 있는 Student 클래스이다.

위의 클래스를 하나씩 뜯어서 확인해보자.

__init__(생성자)

클래스 부분에서 __int__이 있다. 여기서 init 앞 뒤에 있는 것은 '_' 두 개씩 있는 것이다.
클래스에서 이 함수를 생성자라고 부른다. 생성자란 객체가 생성될 때 자동으로 호출되는 메소드이다. 객체의 초기값의 설정을 해줘야 할 때 사용을 한다.

Student의 클래스는 name, s_id, gender ,course라는 변수를 받고 이를 객체의 정보에 저장을 한다. 이 때 self를 사용하는데 지금 생성된 객체에 작용하는 작업이라고 생각하면 된다. 만약 기본 초기값이 설정되어 있지 않으면 변수들중 하나의 값이라도 넣지 않는다면 TypeError가 발생한다.


__str__(출력)

클래스 부분에서 __str__이 있다. 이것을 문자열화 함수라고 한다. 객체를 출력할 때의 형식을 지정해주는 함수이다.

__eq__(비교자)

클래스 부분에서 __eq__가 있다. 이것을 비교 함수라고 한다. 객체간의 값을 비교(==)할 때 사용을 한다.

클래스 내장 함수

일반적으로 string이나 list에서 제공해주는 함수처럼 이 클래스에서 제공해주는 함수이다.


상속

여기서 상속은 "재산을 상속받다" 라고 할 때의 상속과 같은 의미이다. 어떤 클래스를 만들 때 다른 클래스의 기능을 물려받을 수 있는 것이다. 이 상속의 개념을 이용해서 각 학과 별로 신입생에게 기능을 추가할 수 있다. 예를 들어 컴퓨터공학과 학생들에게는 파이썬을 할 수 있는지 물어보는 함수가 있다고 하자. 그러면 다음과 같이 Student 클래스를 상속받아 기능을 추가 할 수 있다. 그리고 상속 클래스를 만들 때는 다음과 같은 형식을 가진다.

class <<자식 클래스 이름>>(<<부모 클래스 이름>>):
<<내용>>



Computer_Student에서 구현을 하지 않았지만 Student의 내용들을 상속받았으므로 Student의 생성자, 문자열화 함수등의 내용들을 사용할 수 있다.

그리고 또한 Computer_Student에서만 구현된 canDoPython도 사용이 가능하다.



메소드 오버라이딩

메소드 오버라이딩은 상속받은 클래스에서 부모 클래스에 정의된 함수를 상속받은 클래스에서 재정의함으로써 사용을 하는 것이다. 컴퓨터 공학과 학생들은 수강신청을 할 때 6과목이 넘는다면 신청을 할 수 없다는 기능을 추가해주고 싶다. 그러면 동일한 이름으로 재정의를 해서 부모클래스의 함수를 덮어버리는 것이다.





728x90
반응형
728x90
반응형

파일 입출력

 만약 당신이 엄청 긴 문자열 중에 특정 단어를 세야 하는 업무를 받았다고 하자. 그렇다면 문자열을 하나의 변수로 받아 count 함수를 사용해서 단어를 세면 된다고 생각할 수 있다. 이 일을 하기 위해 문자열을 변수에 저장하려고 했는데 이 문자열의 양이 너무 많았다. 직접 타이핑하는 것은 불가능하고 복사해서 붙여 넣는 방법을 사용하기에도 여러 페이지로 되어 있어서 오래 걸릴 작업이다. 그렇다면 이와 같은 경우에는 어떻게 해야 할까?

이럴 경우에는 이 문자열을 하나의 txt 파일로 저장을 한 뒤, 이를 입력으로 받아오면 된다. 이처럼 프로그래밍에서는 외부 파일을 '입력'으로 받아서 여러 작업을 할 수 있다. 또한 내가 프로그래밍을 하면서 작성한 내용을 txt에 출력도 가능한데, 이를 파일 입출력이라고 부른다.

import os

파일 입출력을 하기에 앞서 파일을 작성하거나 읽어오기 위해서는 현재 파이썬이 실행되고 있는 위치가 중요하다. 지금 파이썬이 실행되고 있는 위치에 있는 파일에만 읽어올 수 있거나 작성을 할 수 있기 때문이다. 따라서 이를 관리하기 위해서 python에서 파일의 경로에 관한 함수를 제공해주는 os라는 내장 모듈이 있다.

os.getcwd()

os.getcwd()는 현재 python이 작업하고 있는 파일 디렉토리의 경로를 얻어오는 함수이다. 현재 작업하고 있는 위치를 확인을 할 수 있고, 만약 작업 디렉토리의 경로를 이동한다면 잘 이동했는지 확인을 할 수 있다.


os.chdir()

os.chdir()는 작업 디렉토리의 경로를 바꿔주는 함수로 매개변수로 내가 바꾸고 싶은 경로를 입력해주면 된다.


다음은 예시 파일이다. file_example.txt

파일 입출력하는 방법

파일을 읽어오는 방법은 open이라는 함수를 사용하는 것이다. open은 보통 다음과 같이 사용하며 파일 객체를 반환한다.

file=open( <<파일 명>>, <<파일 모드>>,....)

 이외에도 encoding과 같은 매개변수가 존재하나, open은 위 두 개의 매개변수를 주로 사용한다. 첫 번째 매개변수는 내가 열 파일의 이름이거나 작성할 파일의 이름이고, 두 번째 매개변수는 모드를 선택하는 것이다. 모드는 'r' 모드, ' w ' 모드 , 'a' 모드가 있는데 r은 읽기 모드, w는 쓰기 모드, a는 추가 모드이다. 그리고 가장 중요한 것으로 항상 파일을 open을 했다면 close를 해 주어야 한다. 일반적으로 프로그램을 종료하면 자동으로 close가 되기는 하나 닫아주는 편이 좋다.

따라서 파일을 읽어 오는 방법은 다음과 같이 "r" 모드를 사용하면 된다.

쓰기 모드

쓰기 모드는 open(내가 작성할 파일 명,"w")과 같이 사용하며 내가 작성하고 있는 파일 공간에 그 파일 명의 txt 파일이 없다면 생성하여 작성한다. 만약 동일한 명의 txt 파일이 있다면 그 안의 내용을 지우고 새로 작성한다.


읽기 모드

위에서 본 것처럼 'r' 모드로 열면 파일의 내용이 아닌 파일 객체를 반환하게 된다. 이를 함수를 사용해서 읽어내야 하는데 3가지 방법이 있다.

readline

readline은 한 줄씩 읽는 방법이다. 하나의 readline 당 txt 파일의 한 줄을 읽어오며 txt 파일을 전부 읽어오려면 여러번의 readline을 사용해야 한다.



위처럼 readline으로 읽어와 print 할 경우 두 번 줄바꿈을 하는 것을 알 수 있다. 그 이유는 readline으로 읽어올 때, 문자열의 끝에 "\n"이 붙어 있기 때문이다. 따라서 이를 막기 위해서 문자열의 공백이나 줄바꿈을 없애주는 함수인 strip을 사용하도록 한다.


readlines

readlines 에서 더 발전된 형태로 파일을 모두 읽어서 각각의 줄을 하나의 요소로 가지는 리스트로 리턴 된다. 즉 ["......\n",".....\n",".......\n"]과 같은 형식을 가지고 있다.

read

read는 파일 내용 전체를 문자열로 리턴한다.








728x90
반응형
728x90
반응형

2019/01/29 - [Language/Python] - [Python 따라하기]1. Python 설치하기

2019/02/05 - [Language/Python] - [Python 따라하기] 2. 자료형_part 1(String, Int,Float, List)

2019/02/12 - [Language/Python] - [Python 따라하기]3. 자료형_part2(Tuple,Set,Dictionary)

2019/02/19 - [Language/Python] - [Python 따라하기]4.조건문

2019/02/26 - [Language/Python] - [Python 따라하기]5. 반복문(For, While, break, continue)


함수를 사용하는 이유

수학에서는 함수는 f(x)=x^2와 같이 만들고, f(2)=4 와 같이 활용한다. 여기서 f(x)를 함수라고 부르고, x^2은 함수의 내용, 2는 입력값, 4는 결과값이라고 한다. 이와 동일한 구조로 프로그래밍에서도 함수를 만들어서 사용한다.

프로그래밍에서 수학연산을 하기 위해서 함수를 만드는 것은 아니다. 프로그래밍을 하다가 보면 반복적으로 똑같은 작업을 해야 하는 경우가 있을 것이다. 이 작업을 줄이고자 의미가 있는 부분들을 묶어서  함수로 만드는 것이다. 수학에서의 함수와 같이 '하나의 함수당 함수의 내용이 있고, 입력값을 넣으면 출력값이 나온다' 와 같은 방법으로 만든다.

함수의 구조

파이썬 함수의 구조는 다음과 같이 구성된다.

def 함수명(매개변수):
<<수행할 문장들>>

def는 함수를 만들겠다는 예약어이며 함수명, 매개변수, 수행할 문장들은 사용자가 임의로 작성하는 것이다. 조건문과 반복문처럼 함수의 속하는 부분임을 나타내기 위해서 들여쓰기를 사용한다.

다음은 함수의 간단한 예시이다.


여기서 return은 함수의 결과값을 반환해주는 명령어이다.

이 함수는 두 개의 변수 x,y를 받아서 두 개의 합을 반환해주는 함수이다.



위 함수의 구조는 입력값이 있고, 결과값이 있는 일반적인 구조이다.

만약 입력값이 없거나, 결과값이 없는 함수의 구조도 가능할까??



다음과 같이 입력값 혹은 결과값이 없더라도 함수가 동작하는데엔 아무런 문제가 없다.

만약 입력값이 몇 개가 될지 모를 경우

입력값이 여러 개일 때 그 입력값을 다 더해주는 함수를 만들어보자. 하지만 몇 개가 입력될지 모른다면 어떻게 해야할까?
이와 같은 경우에는 *를 사용하면 된다.


매개변수 앞에 *를 사용하면 몇 개가 들어가던지, 전부 모아서 튜플로 바꾸어주기 때문에 상관이 없다.

*매개변수는 단독으로 사용하는 것 이외에도 다른 일반 변수와도 함께 사용가능하다.


return 

return은 함수 값을 반환해주는 명령어로써 사용한다면 하나의 함수에서 한 개만 사용이 된다. 이 점을 이용해서 함수를 끝내는 용도로 사용할 수 있다.
다음 함수는 number로 5를 받으면 return을 만나서 number를 print를 하지 않고 종료됨을 알 수 있다.

초기값을 미리 설정해둘 경우

함수의 매개변수에 미리 초기값을 정해둘 수 있다. 초기값을 정해둔 함수의 경우 함수를 사용할 때 그 값을 넣어 주지 않으면 미리 정해진 값으로 함수를 실행한다. 만약 초기값을 무시하고 값을 넣어준다면 초기값이 아닌 내가 설정한 값으로 함수를 실행한다.

Global , local

함수내에서 사용되는 변수의 성격은 local이라고 할 수 있다. 즉 함수내에서 정의되어 있는 변수는 함수 외부에는 영향을 주지 않는다는 것이다. 다음을 보면 함수 밖에 있는 number가 1로 정의 되어 있고 함수를 통해 number가 2배로 증가 되었을 것 같지만 그렇지 않다.

우리가 정의한 number는 함수 외부의 정의이고 함수 내부에서 2배를 해준 number는 단지 함수 내에서만 사용하는 변수지 밖의 number에는 영향을 주지 못한다는 것이다.


만약 함수 내부의 변수를 외부에 영향을 주려면 어떻게 해야 할까??


두 가지 방법이 있다.

return 

우리가 지금까지 외부의 변수에 영향을 줄 수 있었던 이유는 return을 사용했기 때문이었다.

Global

이 방법은 외부의 변수를 global이라고 재정의를 해서 직접 외부의 변수를 사용하겠다고 명시를 하는 것이다.

보통 global이라고 명시를 해서 사용하기 보단 return을 사용한 방법을 이용한다. 그 이유는 단순한 함수의 경우에는 문제가 없지만 함수가 복잡해질수록 global한 변수는 제어하기 힘들어지기 때문이다. 


Print

지금까지 출력하는 함수인 print를 별다른 설명없이 사용하고 있었다. 하지만 print 내에서도 여러 기능을 제공하고 있었다.
print의 구조는 다음과 구성되어 있다,

print(value,....sep=' ',end='\n',file=sys.stdout,flush=False)

보통 print의 sep이나 end까지만 사용하고 file이나 flush는 사용하지 않는다.

print 내에서 여러 문자열을 + 로 이어가거나 콤마(,)를 사용해서 출력한다. 이 둘의 차이점은 + 은 띄어쓰기를 지원해주지 않지만 콤마로 구분을 하면 띄어쓰기를 해주기 때문이다. 이 이유는 콤마가 sep을 나타내는데, sep의 기본값은 공백으로 설정되어 있기 때문이다.


위에서도 말했듯이 콤마가 sep이 공백으로 설정되어 있기 때문에 띄어쓰기를 했다면 sep값을 주면 콤마를 사용했을 때 그 사이사이에 sep이 들어가게 된다.



또한 출력을 하면 하나의 print 당 한 줄에 나타나게 되는데, 그 이유는 print의 end의 기본값이 줄바꿈으로 설정되어 있기 때문이다.



따라서 end값을 공백으로 변경해준다면 한 줄에 모든 값을 표시해 줄 수 있다.


문자열 포맷팅

한 과일가게가 있다고 하자. 이 가게는 과일의 남은 양들을 공지해주는 프로그램을 만들었다. 그 프로그램은 다음과 같이 공지한다.

"사과가 7개 있습니다."

손님이 와서 사과를 2개 사갔다고 하자. 그러면 다음과 같이 수정된다.

"사과가 5개 있습니다."

위의 두 문자열은 동일한데 숫자 7과 5만 다르다. 이렇게 큰 틀이 있고 특정 부분만 바꾸어서 계속 사용해야하는 문자열이 있다면 문자열 포맷팅을 사용하면 더 편하게 사용할 수 있다.

문자열 포맷팅을 하는 방법에는 크게 세 가지 방법이 있다.

1. % 사용하기
2. format 함수 사용하기
3. f 사용하기

1. % 사용하기

%를 사용할 경우 문자열 포맷코드가 있다. %+"..."와 같은 형태로 사용한다.

코드 

설명 

%d 

 정수형

%s 

 문자열

%f 

부동소수점 

%% 

단어 '%' 


2. format 함수 사용하기

format 함수를 사용하면 좀 더 유연하게 문자열 포맷팅을 하는 것이 가능하다. 포맷팅을 하고 싶은 부분들을 { }로 표시를 하며 { }에 숫자를 집어 넣어서 포맷팅의 순서를 지정할 수 있고, 숫자를 생략한다면 가장 먼저 만나는 { }부터 차례대로 포맷팅해준다.

3. f 사용하기

파이썬 3.6버젼부터 제공하는 기능으로 그 이전 버젼에서는 사용할 수 없다. 문자열 앞에 f를 붙여서 문자열 포맷팅을 할 수 있다.




728x90
반응형
728x90
반응형

2019/01/29 - [Language/Python] - [Python 따라하기]1. Python 설치하기

2019/02/05 - [Language/Python] - [Python 따라하기] 2. 자료형_part 1(String, Int,Float, List)

2019/02/12 - [Language/Python] - [Python 따라하기]3. 자료형_part2(Tuple,Set,Dictionary)

2019/02/19 - [Language/Python] - [Python 따라하기]4.조건문

반복문

 같은 작업을 반복적으로 해야할 때, 반복문을 사용한다면 작업의 양이 줄어들 뿐만 아니라 보기에도 깔끔해지게 된다.
반복문에는 크게 for와 while 두 가지가 있다.



For

for는 주로 list 혹은 String과 같이 반복가능한 객체를 한 번씩 훑어보기 위해서 사용한다. for의 구조는 다음과 같다.

for <<variable>> in <<iterable>>:
<<contents>>

if 절과 같이 for 즉 반복적으로 행할 내용들은 for에 속하는 것임을 나타내기 위해서 indentation(들여쓰기)을 설정해둔다.
if 절과 같이 들여쓰기는 스페이스바 4번이나 탭 한번으로 통일하여 사용한다.
variable은 사용자가 임의로 변수를 설정해서 사용하는데 주로 i , j, k .... 순으로 사용하는게 일반적이다.
다음과 같이 iterable에 String 값을 넣으면 한 글자(char)씩 반복하며 진행한다.


Range

for 반복문을 사용할 때 iterable 부분에 list나 String 값을 넣어서 직접 값을 탐색하며 진행을 하기도 하지만 range를 사용해서 인덱스로 접근을 하기도 한다.
range는 range((start),stop,(step))으로 구성되어 있다. start(선택사항)부터 stop(필수적)까지 step(선택사항)씩 연속적인 정수 객체를 만들어 준다.


range 함수로 만들어진 값은 list와 비슷하게 작동을 하지만 range라는 객체를 가지고 있다. 따라서 list에 사용하는 메소드들을 사용하는 것은 불가능 하므로 사용하기 위해서는 list로 변환 후 사용해야 한다.



다음은 range 와 len 함수를 사용해서 인덱스로 배열값들을 접근하는 경우이다. iterable 자리에 list 나 String을 넣어서 직접 값에 접근을 하게 되면 하나의 배열만 반복문을 사용할 수 있지만 다음과 같이 range와 len을 사용하면 길이가 같은 두 개의 배열을 동시에 반복문을 사용할 수 있다.



enumerate

range에선 인덱스로 접근할 수 없다는 단점을 보완하기 위해서 인덱스와 값을 동시에 접근 할 수 있도록 해주는 함수이다.
enumerate(iterable)로 사용을 하며 인덱스와 값을 쌍으로 가지는 튜플값을 하나의 원소로 가지는 enumerate 객체로 반환을 한다.
enumerate((0,iterable[0]),(1,iterable[1]),.....)



이중 반복문

이중 반복문이란 반복문안에 반복문을 사용하는 것으로 주로 행렬을 나타내고자 할 때, 서로 연관있는 두 개의 반복가능한 객체를 동시에 사용하고자 할 때 사용한다.


위처럼 두 개의 반복문을 사용할 때 서로 각각의 variable을 사용해야 하며 first의 한 값당 second가 한 루틴씩 실행됨을 알 수 있다.


또한 들여쓰기에 따라서 실행되는 횟수가 달라지는데 print(i+"번째 중"+j+"번째")는 i와 j 둘다 속해있는 부분이라 총 9번 실행됨을 알 수 있지만

print("---------------")는 i에만 해당하는 부분이므로 3번만 실행됨을 알 수 있다.


While

while 반복문은 내가 얼마나 반복문을 사용해야 할지 정확히 모를 때 사용하거나 중복적인 인덱스 혹은 값을 접근해야 할 경우에 사용한다.


while의 구조는 다음과 같다.


while <<condition>>:

<<contents>>


while은 for와 달리 순차적으로 진행을 하지 않고 condition이 참인 경우에만 while 내의 내용을 반복한다. 이 말은 condition이 거짓이 될 때까지 계속 반복한다는 뜻이다. 따라서 처음에는 condition이 참이어야 while문이 실행이 되지만 contents를 진행하면서 condition이 거짓이 되도록 만들어야 한다. 그렇지 않으면 무한반복에 빠지게 된다. 만약 무한반복에 빠지게 된다면 ctrl+c 혹은 쥬피터를 사용한다면 위의 정지버튼을 누르면 된다.



아래는 탈출 조건이 없으므로 무한반복에 빠지게 된다.



반복문을 더 효율적으로 활용하기 위해서 break와 continue를 사용할 수 있다.


break

반복문 진행중에 이미 원하는 바를 이뤄서 뒤의 진행이 필요가 없을 수 있다. 따라서 더 효율적으로 사용하기 위해 반복문이 한참 진행중이라도 일정 조건을 만나면 반복문이 끝나게 만들어주는 것이 break다. 또한 while에서는 condition이 아직 참이라도 break를 만나면 반복문이 바로 끝내도록 할 수 있다.
break는 다음과 같이 사용한다.

continue

break는 일정 조건을 만나면 반복문을 깨뜨리지만 continue는 일정 조건에서만 반복문이 진행되지 않도록 한다. 반복문 내에서 continue를 만난다면 아직 반복문 내에 남은 내용이 있더라도 작동하지 않고 다음 값으로 넘어간다. continue는 다음과 같이 사용한다.


728x90
반응형
728x90
반응형

2019/01/29 - [Language/Python] - [Python 따라하기]1. Python 설치하기

2019/02/05 - [Language/Python] - [Python 따라하기] 2. 자료형_part 1(String, Int,Float, List)

2019/02/12 - [Language/Python] - [Python 따라하기]3. 자료형_part2(Tuple,Set,Dictionary)

Bool Type

Bool Type은 이전에 소개했던 자료형처럼 참과 거짓을 나타내는 자료형이다.

Bool Type은 Boolean이라고도 부르며 True와 False 두개의 값만을 가진다. 또한 Boolean 연산자로는 and, or, not 이 있다.


not은 부정 연산자로 True면 False를 False이면 True를 리턴한다. 


and는 전부 참일 경우에만 True를 리턴하고 하나의 False만 있어도 False를 리턴한다.


or은 전부 거짓일 경우에만 False를 리턴하고 하나의 True만 있어도 True를 리턴한다.



Relation Operators(관계 연산자)

관계 연산자란 흔히 알고 있는 > , < , >=, 등을 일컫는다. 연산자의 리턴 값은 Bool이다.


관계 연산자 중 '같다' 가 수학에서 사용하는 기호와는 다르다는 점을 주의해야 한다. 수학에서는 ' = '이 '같다' 라는 의미를 가지고 있지만 프로그래밍 언어에서는 '변수에 값을 대입을 한다.' 라는 의미로 사용한다. 따라서 프로그래밍 언어에서 '같다' 라는 관계 연산자를 사용하고자 하면 '=='를 사용해야 한다.



관계 연산자는 숫자 값들에서만 사용할 수 있는 것이 아닌 String에서도 사용이 가능하다. 그 이유는 컴퓨터에서는 String을 표현하기 위해서 Ascii 코드를 사용하기 때문이다. Ascii 코드는 문자열이나 특수문자를 숫자로 변환한 코드로 미리 정해져 있다. Ascii 코드표는 구글에서 검색을 한다면 쉽게 얻을 수 있다.


If Statement(조건문)

if 절은 다음과 같이 구성되어 있다.

if <<condition>>:
contents

condition의 내용이 True 이면 contents의 내용을 수행하고 False이면 contents 내용을 수행하지 않고 넘어간다.
if에 속해있는 내용이라는 점을 구별하기 위해서 들여쓰기(indentation)를 사용한다. Python에서는 이 들여쓰기는 스페이스바 4번 혹은 tab키 1번으로 통일하여 사용하는데 자신이 편한 방향으로 통일하여 사용하면 된다. 같은 if 절에 속하는 내용이면 모든 content에 들여쓰기를 사용해야 하며 들여쓰기가 끝나는 지점부터는 if절에 속하지 않는 부분으로 판단하게 된다.
다음은 조건문을 사용한 간단한 예시이다.

input() 함수는 사용자가 직접 변수값을 입력하도록 하는 함수이다. 반환값은 항상 string이다. ()안에 다음과 같이 글귀를 넣으면 다음과 같이 글귀를 print 하면서 변수값을 받을 수 있다.


조건문에는 if 이외에도 else와 elif가 존재한다.


else는 해석 그대로 나머지를 뜻한다. if 절에서 if에 있는 조건문 이외의 모든 부분들을 수행한다. 다음과 같은 예시에서는 13세 이상 65세 미만의 경우에는 if절에 해당하는 조건이지만 그 외에의 나이 즉 13세 미만 65세 이상의 나이들은 else 절에 들어가게 된다.



하지만 어떤 경우에는 같은 변수에 대해서 여러 개의 조건을 취하고 싶은 경우도 있을 것이다. 그럴 경우 if를 여러 개 사용하여 조건문을 만들어도 상관이 없지만 다음과 같이 elif를 사용하면 간단하게 줄일 수 있다. elif란 else if 의 줄임말으로 if에 해당하지 않는 조건 중에 추가 조건을 걸어주는 것이다. 다음과 같이 elif를 사용하면 elif에 해당하는 조건으로 들어가게 된다.



else나 elif는 생략해도 무관하기 때문에 작성하지 않아도 괜찮지만 if절은 사용하면 무조건 contents에 하나의 코드라도 작성을 해야한다


만약 일부 조건에 대해서 아무런 조치를 취하지 않고 싶을 경우에는 pass 라는 사용하면 된다. pass는 말 그대로 코드를 실행하지 않고 넘긴다는 뜻이다.


728x90
반응형

+ Recent posts