TigerCow.Door


안녕하세요.

오늘은 파이썬에서 함수에 관해 이야기를 해보겠습니다.

지금까지 우리가 앞에서 이야기했던 것들을 바탕으로 진행되며, 함수는 프로그래밍에 있어서 기본이 되기 때문에

헷갈리거나 오류가 발생하는 부분이 있다면 언제든지 말씀해주세요 :)


1. 함수


함수가 무엇일까요?

예를 들어, 고무라는 재료를 공장에 넣어서 슬리퍼라는 결과물을 만들어내는 과정이 있다고 생각해봅시다.

이를 프로그래밍으로 생각해본다면, 고무는 입력값 또는 인자가 되는 것이고

공장은 함수가 됩니다. 그리고 나온 결과물 슬리퍼는 출력값, 결과값이 되는 것이죠.


이러한 함수를 사용하는 이유는, 프로그래밍을 하면서 반복되는 작업을 보다 수월하게 하기 위해서이기도 하고 하나의 프로그램을 보다 잘 확인하기 위해서입니다.

슬리퍼를 만들기 위한 작업을 많이 작업하는데 작업을 할때마다 그 공장을 매번 만들거나, 몇 번 작업하는지 제어문에 대한 반복을 매번 수정하는 것보다, 슬리퍼를 만드는 함수 하나를 만들어 놓고 필요할 때마다 호출하는 것이죠.

또한 이러한 함수를 한번 만들어 놓고 그대로 사용하기 때문에 그 흐름을 보다 일목요연하게 살펴볼 수 있습니다.



2. 파이썬 함수의 구조


파이썬에서 함수의 기본적인 구조는 아래와 같습니다.


def <함수명>(입력 인수 또는 인자):

<수행할 문장1>

<수행할 문장2>

...


이러한 함수 내부에서는 우리가 앞에서 살펴보았던 제어문이나 기타 개념들이 동일하게 사용될 수 있습니다.

두 개의 정수를 받아서 그 결과를 반환하는 함수를 예시로 작성하면 아래와 같습니다.



위의 코드에서 return은 함수의 결과값을 돌려주는 명령어 입니다.

즉, 위의 코드를 살펴보면 먼저 입력받은 a와 b를 더해서 c에 저장합니다.

그리고 c를 결과값으로 반환하는 함수입니다.



3. 함수의 4가지 유형


이러한 함수에는 크게나눠서 총 4가지의 유형이 있습니다.

하나씩 소개해드리겠습니다.



3-1. 일반적인 함수(입력값과 출력값이 존재하는 함수)


위에서 살펴봤던 함수처럼, 일반적인 함수는 입력값과 출력값이 모두 존재합니다.



위의 코드를 살펴보시면, function1 이라는 함수는 입력값 2개를 받습니다.

그리고 입력받은 2개의 값을 곱해서 그 값을 반환, 즉 출력하도록 되어있습니다.



3-2. 입력값이 없는 함수


두번째로 소개해드릴 유형은, 입력값이 없는 함수 입니다.

즉, 입력값은 존재하지 않지만 출력값은 존재합니다.



위의 코드를 보시면, function2 함수는 입력값을 받지 않습니다.

하지만 함수 내부에서 '입력값이 없는 함수'라는 문자열을 결과값으로 반환합니다.



3-3. 결과값이 없는 함수


세번째로 소개해드릴 유형은, 결과값이 없는 함수입니다.

즉, 입력값은 존재하지만 결과값, 출력값은 존재하지 않는 함수입니다.



위의 코드를 보시면, function3 함수는 두개의 입력값을 받습니다.

그리고 내부에서 입력받은 두 값을 더해서 출력하고 따로 반환하지 않고 끝나게 됩니다.

이러한 함수를 결과값이 없는 함수라고 합니다.



3-4. 입력값과 결과값 모두 없는 함수


마지막으로 소개해드릴 함수는 입력값과 결과값이 모두 없는 함수입니다.



위의 코드를 보시면 function4 함수는 입력값과 출력값이 모두 없습니다.

단지 함수를 호출하면, '입력값과 함수값이 모두 없는 함수'라는 문자열을 출력하게 됩니다.



4가지의 함수 유형을 살펴보았는데, 이들은 자신이 구현하고자 하는 내용에 맞춰서 사용하시면 됩니다.



4. 입력값의 개수를 모를 때


우리가 함수를 만들면서, 몇개의 입력값이 들어올지 모르는 경우가 있습니다.

예를 들어, 우리가 원하는 정수들의 합을 모두 구하고 싶을 때, 그 정수들이 무조건 2개 또는 3개이라는 법은 없죠.

이럴때 사용하는 방법이 있습니다.

아래의 형태와 같이 입력 변수값 앞에 * 를 붙이면 됩니다.


def <함수형>(*입력 변수):

<수행할 문장1>
...


이를 토대로 여러개의 정수를 더하는 함수를 만들어보면 아래와 같습니다.



코드를 보시면 짐작하실 수 있겠지만, 우리가 여러개의 입력을 받을 것이라고 해두었던 *입력변수 는 여러개의 입력값을 받아서 튜플의 형태로 가지게 됩니다.

따라서 for 문을 통해 입력받은 여러개의 변수를 확인할 수 있게 됩니다.



5. 함수의 입력값에 초기값 설정하기


이번에는 함수의 입력값에 초기값을 미리 설정하는 방법을 알아봅니다.

예를 들어, a,b,c 라는 세개의 입력을 받는 함수가 있는데 특정한 일이 없으면 c는 항상 10으로 초기에 설정해두고 싶다면 아래와 같은 방법을 사용하면됩니다.



위의 코드를 보시면 입력 변수를 받을 때, c = 10 으로 초기값을 설정해 두었습니다.

이렇게 해두면 첫번째 result 를 에서 반환하는 것과 같이 따로 c에 값을 입력하지 않으면 10이라는 값으로 함수에서 처리합니다.

하지만 두번째 result를 반환하는 것과 같이 c에 값에 20이란 값을 입력으로 넣으면 초기값과 상관없이 입력한 20의 값으로 함수가 처리됩니다.




이렇게 해서 함수에 대한 전반적인 이야기를 해보았습니다.

좀 더 궁금하다 또는 자세한 설명이 필요한 점은 댓글을 남겨주세요! 보완하겠습니다.

다음에는 사용자의 입출력 또는 파일IO에 대해서 살펴보겠습니다.

블로그 이미지

Tigercow.Door

Web Programming / Back-end / Database / AI / Algorithm / DeepLearning / etc

댓글을 달아 주세요


안녕하세요.

이번 포스팅에서는 파이썬에서의 제어문에 대해 알아보려고 합니다.

다른 언어를 공부하셨던 분들은 익숙하실 겁니다.

개인적으로 느끼기엔 처음 공부하시는 분들도 다른 언어에 비해 이해하기 쉽고 간편하다고 생각됩니다.

궁금하신점은 언제든지 댓글이나 이메일을 이용해주세요 :)


1. if문


우리는 일상생활에서 다음과 같은 말을 자주 이용합니다.

" A 면, B 해라 "

즉, A라는 조건이 참(True)일때 B라는 행동을 하라는 것이죠.

영어에서는 이러한 문장을 if문을 이용해서 나타냅니다.

그리고 이러한 것을 표현할때 파이썬에서도 if를 사용합니다.

먼저 간단한 예시를 보겠습니다.

아래 예시는 money라는 변수에 5000이라는 정수값을 저장하고, money가 3000이상이면 택시를 타고, 그렇지 않으면 버스를 타라는 문장을 출력해보는 예시입니다.



설명해준 것과 예시의 코드를 비교해서 보시면 쉽게 이해가실 겁니다.

먼저 첫번째 문장에서 money 변수에 5000이라는 정수값을 저장하였습니다.

그리고 두번째 문장에서 if 제어문을 사용하였습니다.

그리고 그 아래에서는 if 제어문의 조건이 참일때 실행되는 문장이고

그것이 아닐때, else일때 실행되는 문장이 이어서 작성되었습니다.


파이썬에서 if문은 아래와 같은 형식으로 사용됩니다.


if <조건1>:

<조건1이 True일때 실행되는 문장>

elif <조건2>:

<조건1이 False이고 조건2가 True일때 실행되는 문장>

elif <조건3>:

<조건1과 조건2가 False이고 조건3이 True일때 실행되는 문장>

else:

<조건1, 조건2, 조건3이 모두 False일때 실행되는 문장>


위의 형식에서 elif문은 생략이 가능할뿐 아니라 개수에 상관없이 추가가 가능합니다.



2. if문에서의 조건문 형식


그럼 if문에서 <조건>은 어떤식으로 작성될까요?

처음 예시에서 보여드린 것처럼, 수학의 대소비교등의 기호도 사용되지만 보다 많은 구문도 사용가능합니다. 


먼저, 수학에서의 다양한 기호가 사용가능합니다.

A > B 와 같이 A가 B보다 크다 또는 A<= B와 같이 A가 B보다 작거나 같다의 의미도 나타낼 수 있으며

A == B와 같이 A와 B가 같다라는 조건도 가능합니다.


두번째, and / or / not 입니다.

A and B는 A와 B가 모두 True일때 True를 반환합니다.

A or B는 A또는 B중 하나 이상이 True일때 True를 반환합니다.

not A는 A의 반대를 반환합니다. 즉 A가 False일때 not A는 True를 반환합니다.


세번째, A in list/tuple/문자열 입니다.

A in list는 해당 list 내부에 A라는 요소가 포함되어 있을때 True를 반환합니다.

list 대신 tuple, 문자열도 사용될 수 있습니다.



3. while문


다음으로 알아볼 제어문은 while문 입니다.

while문은 다음과 같이 사용됩니다.

다음의 예시가 나타내는 바는, money에 1000이라는 정수값을 저장하고, money가 3000미만이면 money에 500원을 추가하며 3000이상일때 까지 반복한다. 그리고 money가 3000이상이면 이를 중단하고 택시를 탈수 있다는 문장을 출력합니다.



그리고 while문에서 응용될 수 있는 두가지 구문이 있습니다.

break와 continue인데, 먼저 break는 while문에 대한 조건과 상관없이 while문을 빠져나오는 구문입니다.

그리고 continue는 while문의 첫문장으로 돌아가도록 하는 구문입니다.


특히, while문에서는 무한루프가 발생할 수 있습니다.

아래와 같은 경우에서 무한루프가 발생합니다.

temp = 2

while temp%2 == 0:

temp = temp*3


temp 변수의 초기값은 2였습니다. 그리고 temp를 2로 나누었을때 나머지가 0이면 while문이 수행됩니다.

그리고 while문 내에서 temp 값에 3을 곱해서 그대로 저장합니다.

그렇다면 temp 값은 2*3^n 꼴이기 때문에 2로 아무리 나누어도 계속해서 나머지가 0입니다.

때문에, 해당 코드에서 while문을 빠져나오지 못하고 무한루프에 갇히게 됩니다.


무한루프는 실용적으로 사용할 수도 있지만, 일반적으로 무한루프가 발생하지 않도록 하는 것이 좋다고 합니다.



4. for 문


마지막으로 살펴볼 제어문은 for문 입니다.

for문은 아래와 같은 형식을 가지고 있습니다.


for <변수> in <리스트/튜플/문자열>:

<수행할 문장1>

<수행할 문장2>

...


먼저 in 뒤에 나와있는 리스트 또는 튜플 또는 문자열의 맨 앞의 요소부터 마지막 요소까지 하나씩 꺼내어서 변수에 저장합니다. 즉, 아래 예시와 같이 작동하는 것입니다.




for문에서 자주 함께 사용되는 함수로는 range()함수가 있습니다.


range함수는 숫자 리스트를 만들어 주는 함수로써 다음의 형식을 가집니다.

range(A,B) : A, A+1, A+2, ... , B-2, B-1

즉, range(A,B)는 A이상, B미만의 값을 가진 리스트입니다.

따라서 아래의 예시와 같이 사용될 수 있습니다.





이렇게 파이썬에서 사용되는 제어문들에 대해서 간단히 알아보았습니다.

연습하시다가 막히는 부분이나 추가적으로 궁금한 사항은 언제든 말씀해주세요 :)


블로그 이미지

Tigercow.Door

Web Programming / Back-end / Database / AI / Algorithm / DeepLearning / etc

댓글을 달아 주세요


안녕하세요. 지난 포스팅에서 리스트 자료형에 대해서 알아보았습니다.

이번에는 그에 이어서, 리스트 자료형과 관련된 함수들에 대해서 알아보도록 하겠습니다.


1. 리스트 끝에 요소 추가하기(append)


첫번째로 알아볼 함수는 리스트에 요소를 추가하는 함수 입니다.

append란 사전적의미로, '덧붙이다, 첨부하다.' 라는 의미를 가지고 있습니다.

즉, append(x)는 특정 리스트의 끝에 x라는 요소를 추가하는 함수 입니다.



리스트에는 어떠한 자료형도 추가할 수 있는 것을 기억하세요.



2. 리스트의 원하는 위치에 요소 삽입하기(insert)


insert함수는 append함수와 달리 요소가 삽입되는 위치를 지정할 수 있습니다.

insert(a,b)로 사용되는데, 이는 a위치에 b요소를 삽입한다는 의미입니다.




3. 리스트 정렬하기(sort)


sort함수를 통해 리스트에 있는 요소들을 순서대로 정렬할 수 있습니다.

기본적으로 sort함수는 숫자 또는 알파벳 등을 오름차순으로 정렬해줍니다.



4. 리스트 뒤집기(reverse)


reverse함수는 리스트에 있는 요소를 역순으로 정렬해줍니다.

특정 기준(오름차순 또는 내림차순)으로 정렬하는 것이 아니라, 현재 있는 요소들을 단지 거꾸로 뒤집는 함수입니다.




5. 요소의 위치 반환(index)


index는 요소의 위치, 즉 index를 반환해주는 함수입니다.

index(x)는 리스트에 x라는 요소가 있을 때, 어떤 위치, 어떤 index에 있는지 알려줍니다.

리스트에 x가 없을 때는 오류를 반환합니다.




6. 리스트 요소 제거하기(remove)


remove함수는 리스트에서 나오는 첫번째 특정 요소를 삭제하는 함수입니다.

즉, remove(x)는 리스트에서 첫번째로 등장하는 x라는 요소를 삭제하는 것입니다.

만약 요소가 리스트에 존재하지 않는다면 오류를 반환합니다.




7. 리스트 요소 꺼내기(pop)


스택이라는 자료구조를 공부하신 분은 익숙할 함수입니다.

pop은 리스트에서 맨 마지막 요소를 출력하면서 그 요소를 리스트에서 삭제하는, 즉 리스트에서 꺼내버리는 함수입니다.



하지만 파이썬에서느 추가적으로 특정 위치에 있는 요소에 대해서 pop함수를 사용할 수 있습니다.

pop(x) 와 같이 pop함수 뒤에 하나의 인자를 넣어주면 x위치에 있는 요소를 꺼내게 됩니다.




8. 리스트의 요소 개수 세기(count)


count는 리스트에 있는 특정 요소의 개수를 확인하는 함수입니다.

즉, count(x)로써 사용하는데 이는 리스트에서 x라는 요소의 개수를 반환합니다.




9. 리스트 확장하기(extend)


extend함수는 원래의 리스트에 리스트를 더하는 함수입니다.

extend(x) 로써 사용하는데, 위의 함수들과 달리 extend는 리스트 자료형을 더해주는 것으로써, x라는 인자가 리스트 자료형이어야 합니다.





이렇게 해서 리스트 자료형과 관련된 함수들에 대해서 알아보았습니다.

다음 포스팅부터는 튜플 자료형에 대해서 알아보도록 하겠습니다.









블로그 이미지

Tigercow.Door

Web Programming / Back-end / Database / AI / Algorithm / DeepLearning / etc

댓글을 달아 주세요

안녕하세요.

오늘은 파이썬에서 문자열 포매팅에 대해서 알아보도록 하겠습니다.

특정한 값이나 변수등을 문자열에 입력하거나 문자열이 변수에 값에 의해 바뀌어야 하는 등의 상황에서 유용하게 사용될 수 있습니다.


1. 문자열 포매팅


먼저 아래와 같은 상황이 있다고 생각해봅시다.



근데 만약, a라는 변수의 값을 5로 바꾼다면?



그럼 b의 문장, "변수 a의 값은 3입니다."라는 문장은 틀리게 됩니다.

그럼 b의 문장이 참이 되도록, 문장에서 특정한 값을 바꾸게 하는 방법은 무엇이 있을까요?

바로 문자열 포매팅입니다.

문자열 포매팅이란 문자열안에 특정한 값을 삽입하는 방법을 말합니다.

문자열 포매팅에는 숫자를 대입하거나 문자열을 대입하는 등 다양한 방법이 있습니다.

하나씩 알아보도록 할게요.



1-1. 숫자 바로 대입하기



위의 예제에서 처럼 숫자를 대입하고 싶은 곳에 %d 를 입력하고 해당 부분에 삽입할 숫자는 문자열 가장 뒤에 % (숫자)를 입력함으로써 문자열 포매팅을 합니다.

이때 %d 는 문자열 포맷 코드라고 부르는데, 뒤에서 자세히 알아보도록 하겠습니다.



1-2. 문자열 바로 대입하기



숫자를 바로 대입하는 방식과 비슷한 방식으로 진행됩니다.

차이점은 숫자 바로 대입에서는 %d 가 쓰였지만, 문자열 바로 대입에서는 %s 가 사용된 점입니다.

역시나 %s 는 문자열 포맷 코드라고 부르며 자세한 이야기는 뒤에서 나누도록 하겠습니다.



1-3. 변수로 대입하기


그럼 숫자 또는 문자열을 바로 대입하는 것이 아니라, 변수로써 대입하는 방법은 무엇일까요?

아래 예제를 통해 알아보도록 하겠습니다.



위의 예제를 통해 대충 감이 잡히시나요?

먼저 한가지 알아야 할 점은, 변수의 값이 숫자형인지 문자열인지 알아야합니다.

만약 변수의 값이 문자열이라면 문자열 포맷 코드를 %d는 사용하지 못하고 %s를 사용해야 합니다.

하지만 변수의 값이 숫자라면 일반적으로 %d 를 사용하지만 %s 또한 사용이 가능합니다.



1-4. 여러개 대입하기



한번에 여러 숫자 또는 여러 문자열을 대입하는 방법은 위의 예제처럼,

각각의 변수를 % 뒤에 괄호를 하고 그 내부에서 콤마(,)로 구분하면 됩니다.



2. 문자열 포맷 코드


위에서 문자열 포맷 코드라는 이야기가 나왔는데요, 대체 무엇일까요?

쉽게 말해서 특정 값이나 변수를 문자열로 포맷시킬때 이용되는 코드입니다.

위의 예제에서 보았던 것 처럼, 문자열은 %s로 받아야하고, 문자열을 %d로 받으면 오류가 난다고했죠?

그런 개념입니다.

문자열 포맷 코드는 아래 표를 참고하시면 되겠습니다.


설명

%s

문자열(String)

%c

문자 1개(Character)

%d

정수(Integer)

%f

부동 소수(floating-point)

%o

8진수

%x

16진수

%%

Literal % (문자 % 그 자체)



3. 포매팅 응용하기


위에서 쭉 알아보았듯이, 문자열 포매팅은 특정 값을 문자열 내에 삽입하기 위해서 사용됩니다.

그리고 그러한 포매팅에서 더욱 유용하게 사용될 수 있는 몇가지를 소개하겠습니다.


3-1. 정렬 및 공백


포매팅을 할때 특정 값이 몇칸의 공백을 가질 것인지, 그리고 정렬은 어떻게 할 것인지 정할 수 있습니다.

아래 예제로 확인하세요.



위의 예제에서 볼 수 있듯이 문자열을 포맷할때에는 크게 아래와 같이 구분이 됩니다.

%   (- / +)   (숫자)   (포맷 코드)

이때, -는 왼쪽 정렬, +는 오른쪽 정렬입니다.

또한 숫자는 해당 값이 문자열에서 몇 칸을 가질 것인지를 정해줍니다.



3-2. 소수점 표현하기


또한 소수를 표현할때 몇번째 자리 까지 표현할지를 조정할 수 있습니다.

아래 예제를 통해 확인하세요.




4. 문자열 포매팅 총 정리


지금까지 알아본 문자열 포매팅을 간단하게 정리해보도록 하겠습니다.

먼저 문자열에 특정 한 값을 대입하기 위해 사용되는 문자열 포매팅은 기본적으로 아래와 같은 구조를 가집니다.

"문자열 포매팅은 %  (- or +)  (숫자1 . 숫자2)  (포맷 코드) 번째 포스팅입니다." % (숫자 및 문자열 및 변수.. 포맷코드에 맞도록!)

(- or +) 를 통해 입력되는 값을 왼쪽 정렬로 할지 오른쪽 정렬로 할지 결정할 수 있습니다.

(숫자1 . 숫자2)  에서는 숫자1을 통해 입력되는 값이 문자열에서 몇칸을 가질지, 그리고 숫자2는 만약 소수를 표현하는 것이라면 소수점 몇번째 자리까지 표시할 것인지를 결정할 수 있습니다.

(포맷 코드) 는 입력되는 값이 어떠한 자료형인지 확인하고 그에 맞춰서 올바른 코드를 입력해야 합니다.



이렇게 해서 파이썬의 문자열 포매팅에 관해 알아보았습니다.

다음 포스팅에서는 파이썬에서 문자열과 관련된 함수들을 소개해드리도록 하겠습니다.

블로그 이미지

Tigercow.Door

Web Programming / Back-end / Database / AI / Algorithm / DeepLearning / etc

댓글을 달아 주세요