Python - 기초

2022. 3. 27. 15:43Python

파이썬은 굉장히 인간다운 언어이다.

문법이 쉽기 때문에 빠르게 배울 수 있고 무료이지만 매우 강력하다.

인터프리터 언어이기에 조금 느리지만 C와 같이 쓸 수 있다!

시스템 유틸리티/GUI 제작/C, C++과의 결합/웹 프로그래밍/데이터 분석/데이터베이스 프로그래밍 등.. 여러가지 할 수 있지만 시스템과 밀접한 프로그래밍 영역에 대한 접근이나 모바일 프로그래밍 등은 못한다.

 

<자료형>

자료의 데이터 타입이며 입력한 값을 숫자인지 문자인지 구분할 수 있게 해줌

자료에 대한 타입으로는 숫자, 문자열, 불(논리)

어떠한 값을 담는 자료구조로 변수, 리스트, 튜플, 딕셔너리, 집합 등이 있음

 

변수란? 

어떤 값을 담는 상자이다

a = a+1 
//오른쪽에 있는 a+1의 값을 왼쪽 a에 담는다는 뜻

여러가지 자료형들에 대한 예제들을 보자

정수

a = 1
print(type(a))
print(a)

출력 결과

<class 'int'>
1

실수

a = 1.2
print(type(a))
print(a)

출력 결과

<class 'float'>
1.2

print(type(변수))로 해당 변수의 자료형을 확인할 수 있다.

파이썬은 타 언어들과 다르게 변수의 자료형을 굳이 선언 해주지 않아도 정수면 int 실수면 float 등 알아서 정해준다.

 

a = 3
b = 4
print(a//b)
// a/b는 나누기 a//b는 몫을 나타내는 식이다.
print(a**b)
// **는 제곱으로 계산해준다,

 

<문자열 자료형>

a = "Hello World"
print(type(a))
print(a)

b= 'Python\'s favorite food is perl'
print(b)

출력 결과

<class 'str'>
Hello World
Python's favorite food is perl

파이썬에서는 "", '' 안에 문자열 변수를 선언할 수 있다.

b를 보면

\

이 문자의 의미는 이 기호 바로 뒤에 나올 문자는 문자열로 인식해달라고 컴퓨터에 말하는 것이다.

저 기호를 붙이지 않고 한다면 'Python' 까지만 문자열로 인식해 출력이 되고 그 이후엔 컴퓨터 입장에선 알 수 없는 말이기에 오류가 뜬다.

 

이러한 코드를 이스케이프 코드라고 칭하며

프로그래밍할 때 사용할 수 있도록 미리 정의해 둔 문자 조합이다. 

자주 쓰이는 몇가지에 대해서 소개 해보겠다.

\n		문자열 안에서 줄을 바꿀 때
\t 		문자열 사이에 탭 간격을 줄 때
\\ 		문자 \를 그대로 표현할 때
\' 		문자 '를 그대로 표현할 때
\" 		문자 "를 그대로 표현할 때
\b 		백스페이스
\000	널 문자

 

아래와 같이 큰 따옴표를 3개를 써서 print함수를 사용하면 

b= """Python's 
favorite 
food is 
perl"""
print(b)

 

출력 결과

Python's 
favorite 
food is 
perl

이렇게 이스케이프 문자를 사용하지 않고도 그대로 출력 되는 결과를 확인할 수 있다

 

*문자열 더하기

a = "Python"
b = "is fun!"
print(a+b)
print(a*5)

출력 결과

Pythonis fun!
PythonPythonPythonPythonPython

좀 놀랐던게 문자열*숫자를 입력하니 해당 문자열을 그 횟수만큼 반복한다는 사실도 확인할 수 있었다 ㄷㄷ

 

<인덱싱>

- 파이썬에서는 0부터 숫자를 센다.

가령, 이런 문자열이 있다고 가정하고

a = "My name is inho"

 

a[0] M
a[1] y
a[2] 공백
 .
 .
 .
a[n] o

이러한 형식이다

a = "My name is inho"

print(a[5])

이 코드의 실행 결과는 당연히

m

이 출력이 된다 0부터 시작해 a[5]는 m이기 때문이다.

 

그러면 음수를 넣으면 어떻게 될까?

a = "My name is inho"

print(a[-1])

출력 결과

o

우리는 음수를 넣으면 오른쪽 끝에서부터 역순으로 카운트 한다는 사실을 확인할 수 있다.

 

* 인덱싱을 이용한 슬라이싱 기법

a = "My name is inho"

print(a[0:4])

출력 결과

My n

분명 범위는 0번 인덱스부터 4번 인덱스이다. 

여기서 4번인덱스는 a이다. 하지만 n까지 출력된 것을 보면 끝 범위 -1까지만 출력을 하는 것을 확인할 수 있다.

고로 a[ : : ]은

//a[이상 : 미만 : 간격] 을 의미한다.

간격의 경우 따로 지정해주지 않으면 1의 값을 기본으로 가진다.

만약 첫번째 '이상'부분에 어떠한 값도 넣지 않는다면?

a = "My name is inho"

print(a[:7])

출력 결과

My name

첫칸을 비울 경우 무조건 처음부터 시작한다는 사실을 확인할 수 있다.

그렇다면 당연히 두번째 칸을 비운다면 끝까지 출력 될거라고 생각이 드는데 확인 해보자

a = "My name is inho"

print(a[2:])

출력 결과

 name is inho

2번째 인덱스인 공백부터 시작해 끝까지 출력되는 결과를 확인할 수 있다.

 

언어를 공부하면서 가장 중요한 것은 아무리 간단한 내용이라도 대충 이렇겠지 하고 넘어가기 보단 하나하나 직접 해보면서 경험하는 것이 중요한 것 같다. C언어 공부할 때 Java에서 배운 내용이고 비슷하니까 대충 이렇겠지~하고 넘어갔다가 결국 처음부터 다시 공부하는 불상사가 일어났다.. 이젠 그런 멍청한 짓 안할려고;

 

그래서 간격까지 확인 해보자

a = "My name is inho"

print(a[::2])

출력 결과

M aei no

2칸 간격으로 출력을 하는 것을 확인할 수 있다.. 좀 귀찮더라도 제발 꼭 한번씩 다해봐 진짜 나중에 피눈물 흘린다...

 

좀 더 공부하다 보니 반가운 친구들 발견

num = 5
day = "two"
a = "I ate %d apples. so I was sick for %s days." % (num, day)

print(a)

 출력 결과

I ate 5 apples. so I was sick for two days.

근데 오히려 C보다 알아보기 쉽지 않나? 파이썬 처음 접하는 나 조차도 %d, %s를 문자열 뒤에 %(num, day)로 표시한걸 보면 당연히 %에 해당하는 값들을 순서대로 넣어준거라고 생각이 든다

%s = 문자열(String)
%c = 문자 1개(character)
%d = 정수(Integer)
%f = 부동 소수(floating-point)

익숙한 서식지정자 친구들.. 이런건 C와 차이점 없다

 

a = "%0.2f" %3.124324
print(a)

하나 짚고 가면 %간격.소수점 남기는 자리의 수를 이용해 출력한다는 사실을 기억하고 가자

출력 결과

3.12

 

<format>

a = "I ate {} apples.".format("five")

print(a)

출력 결과

I ate five apples.

좀 더 보면

a = "I ate {dasdf} {ag} apples.".format(dasdf="five", ag="ee")

print(a)

 

출력 결과

I ate five ee apples.

굉장히 대충 썼지만 그래서 더 명확히 확인할 수 있다.

format을 이용해 문자열 사이에 원하는 변수나 값을 넣는 방법도 있다는 사실 !

 

<count와 find함수>

a = "python jonna ha,,,"
print(a.count(','))
print(a.find('t'))

출력 결과

3
2

위와 비슷한 index함수도 있지만 후에 배울 리스트와 연결해서 많이 사용하는 join함수에 대해 짧게 정리해보겠다.

a = ","
print(a.join('abcd'))

 

출력 결과

a,b,c,d

예제를 보면 알 수 있듯이 문자열 삽입함수이다.

 

<대소문자 변환 함수 upper/lower>

a = "abcd"
print(a.upper())
b = "EFGH"
print(b.lower())

출력 결과

ABCD
efgh

 

<공백을 없애주는 strip함수>

a = "                  Hello~               "
print(a.strip())

출력 결과

Hello~

 

<문자열을 바꾸는 replace함수>

a = "I love dog"
print(a.replace("dog", "cat"))

출력 결과

I love cat

 

<문자열을 나누는 split 함수>

*문자열을 잘라서 리스트로 만들어줌

a = "I love dog"
print(a.split())

출력 결과

['I', 'love', 'dog']

split()안에 문자를 기준으로 문자열을 자름

 

 

'Python' 카테고리의 다른 글

Python - 제어문  (0) 2022.03.27
Python - 자료형의 값을 저장하는 공간 <변수>  (0) 2022.03.27
Python - boolean  (0) 2022.03.27
Python - tuple/dictionary/set  (0) 2022.03.27
Python - 리스트  (0) 2022.03.27