본문 바로가기

Programming languages/Python

1. Basic & Data Type(Number, String)

728x90
반응형

<Basic>

introduce = "This is Minjun's Python studying" #옳은표현
print(introduce)

introduce2 = 'This is Minjun's Python studying' #잘못된표현
print(introduce2)

우선 필자는 해당 과목을 위키독스의 '점프 투 파이썬'을 참고해서 공부했다.

대학생들은 재학기간동안 InteliJ사의 프로버전 에디터들을 무료로 사용 가능하다.

따라서 PyCharm PRO 에디터를 사용하겠다.

 

처음 파이썬을 공부할 때 헷갈렸던 부분이 상당히 많았다.

나에게 가장 익숙한 언어가 C언어였기 때문에 C언어와 파이썬을 비교하면서 이해하고 공부하는 방법을 주로 썼다.

 

숫자형 자료형에는 정수, 실수, n진수(컴퓨터에선 주로 2진수, 8진수, 16진수)가 많이 쓰인다.

c언어의 경우 int, double 등 자료형을 먼저 규정해주고 변수를 선언하는 것이 일반적이지만 파이썬은 그렇지 않다.

a = 1
b = 1.5
c = 0o167
d = 0x8ad

print(a)
print(b)
print(c)
print(d)

이렇게 해도 전혀 오류가 나지 않는다. 그냥 변수를 선언하고 변수에 값을 넣어주면 값에 맞게 알아서 자료형이 정해진다.

C언어에서는 자료형이 다른 변수들끼리 연산을 할 때 강제로 형 변환을 해줘야 했지만 여기서는 그러지 않아도 된다.

 

a = 1 + 1.7
b = 1.2 * 2
c = 0o167 % 0o133
d = 0x8ad - 7

print(a)
print(b)
print(c)
print(d)

해당 연산도 별도의 형 변환이나 자료형 설정 없이 아주 잘 나온다.

연산기호의 첨언을 하자면

+는 덧셈,

-는 뺄셈,

*는 곱하기,

/는 나누기,

//는 나눈 후 몫을,

%는 나눈 후 나머지 값,

**은 제곱을 연산하는 기호이다.

 

문자열은 문자, 단어 등으로 구성된 문들의 집합이다.

"Hello, World!", "1,2,3" 등이 있다.

1,2,3 은 정수형으로 숫자를 표현한 것이고 "1,2,3"은 숫자가 아닌 문자다.

둘은 엄연히 다르다.

introduce = "This is Minjun's Python studying" #옳은표현
print(introduce)

introduce2 = 'This is Minjun's Python studying' #잘못된표현
print(introduce2)

introduce3 = '"He is very smart." she says' #옳은표현
print(introduce3)

introduce2_edited = 'This is Minjun\'s Python studying' #옳은표현
print(introduce2_edited)

위에 코드를 보면 이렇게 정리 할 수 있다.

1. " " 안에 ' 혹은 ' '가 들어갈 수 있다.

2. " " 안에 ""는 못들어 간다. 

3. ' ' 안에 "가 들어갈 수 있다.

4. ' ' 안에 ""가 들어가면 인용 구절을 표현할 수 있다.

5. ' ' 안에 ' '는 못들어 간다.

6. 그러나 따옴표 앞에 \ 를 삽입하면 2,5번도 가능하다.

 

multiline = "Life is too short\nYou need python" #\n 줄바꿈 사용


multiline2='''
Life is too short
You need python
''' # ''' 줄바꿈 사용


multiline3="""
Life is too short
You need python
""" # """ 줄바꿈 사용

print(multiline)
print(multiline2)
print(multiline3)

줄 바꿈은 C언어와 같이 \n도 가능하고 '''과 """ 도 사용 가능하다.

 

print("*"*5)
print("Just do IT!"*6)

a = "Just Do IT"
len(a) #띄어쓰기를 포함한 글자의 개수를 카운트 해준다.

a[0] == 'J'
a[1] == 'u'
a[4] == ''

a[0:4] == 'Just'
a[5:] == 'do IT'

위에 코드를 한번 보도록 하자.

파이썬은 문자열에 정수를 곱해서 동일한 문장이 여러 번 출력되게 할 수 있다.

len() 함수를 쓰면 띄어쓰기를 포함한 문자의 개수를 카운트해서 알려준다.

따라서 len(a) = 10

 

문자열은 c언어의 배열처럼 파이썬 리스트의 숫자를 통해서 해당 위치에 문자에 인덱싱 할 수 있다.

[0]부터 시작한다. 따라서 a[0] == 'J', a[1] == 'u', ....a[9] == 'T' 일 것이다.

 

a[0:4]는 인덱싱이라는 것이다.

파이썬에서 문자열을 범위를 사용해서 접근할 수 있다.

a[0:4]는 a[0] ~ a[3] 까지 출력해준다. 이는 a[:4]로 동일하게 사용 가능하다.

a[5:] 는 a[5] 부터 마지막에 있는 문자열을 출력해준다.

위에 인덱싱과 같이 생각하면 쉽게 이해할 수 있다.

 

name = 'BanApp'
age = 25
place = 'Geek_Inside'
score = 4.5
record = 'A'


print("%10s is %d years old. He lives in '%s' and he got score %0.3f. It is %c grade! He is %d%% Genius!" %(name, age, place, score, record, 100 ))


print("{0} is {1} years old. He lives in '{2}' and he got score {3}. It is {record} grade! "
      "He is {p}% Genius!".format(name,age,place,score,record='A',p=100)) #포매팅 혼합
      
print(f"{name} is {age} years old. He lives in '{place}' and he got score {score}. It is {record} grade! "
      "He is 100% Genius!") #3.6번 이후만 가능한 f문자열 포매팅

문자열 포맷 코드에 필요한걸 최대한 한 번에 정리해 보았다. 우선 문자열은 %s로 받는다, 정수는 %d, 실수는 %f, 단일 문자는 %c 그리고 %를 문자로 표현하고 싶을 땐 %%로 쓰면 %로 결과가 출력이 된다. %10s는 10칸 띄고 시작하는 의미다. 실수형에서 0.3f는 소수점 아래 3자리까지 표시해준다는 것을 의미한다. 만약 %10.3f가 된다면? 앞에 10칸 띄고 소수점 아래 3자리까지 표시하라는 의미다.

위의 코딩 결과는 다음과 같다. 

 

          BanApp is 25 years old. He lives in 'Geek_Inside' and he got score 4.500000. It is A grade! He is 100% Genius!

 

자료형에 맞게 문자 포맷 코드를 넣어주고 뒤에 %변수 or %(변수1 변수2 변수3) 로 묶어주면 된다. 변수 선언 및 데이터 대입 순서에는 상관이 없다. 포맷 코드와 순서만 맞춰서 뒤에 변수 이름을 순서에 맞게 잘 적어주면 된다.

 

2번째 print문을 보면 .format()을 이용하면 자료형에 맞게 문자열 포맷 코드를 따로 지정해 주지 않아도 된다. {0}, {1} 등등 혹은 {이름}으로 선언해 주면 된다. 사실 자료형을 크게 신경 쓸 필요가 없는 파이썬에 좀 더 어울리는 표현법은 .format()을 이용하는 것 같다. 위처럼 인덱스와 항목은 혼용이 가능하다.

 

3번째 print문을 보면 문장 제일 앞에 f를 붙여서 변수명으로 직접 값들을 참조할 수 있게 만들었다. 비록 파이썬 3.6 버전 이후만 가능하지만 역시 최신 기능인만큼 편하고 강력하다. 필자가 가장 선호하는 방법이다. 그러나 코딩 환경이 어떻게 달라질지 모르기 때문에 3번째 방법만 기억하고 1,2번을 사용할 줄 모르면 안 된다.

 

a = "My tea's gone cold I'm wondering why I Got out of bed at all"

print(a.count('a')) #문자 개수 카운트
print(a.find('a')) #처음 나온 위치 반환
print(a.find('z')) #없으면 -1 반환
print(a.index('a')) #처음 나온 위치 반환
print(a.index('z')) #오류를 뿜어낸다 실행시 주석 처리 할것

print(",".join(a)) #문자 사이마다 "," 삽입
print(a.upper()) #모두 대문자로
print(a.lower()) #모두 소문자로
print(a.replace("tea's","body")) #문자열 교체
print(a.split()) #공백 기준으로 문자 나누기

 

문자열 관련 함수들을 한번 짚고 넘어갈 필요가 있다고 생각한다. 보통 파이썬은 함수를 사용할 때 변수뒤에 .을 붙이고 함수명을 적는다.

ex) a.count() 이런 식으로 말이다. 

 

Q&A) 궁금증이 생겼다. find와 index는 거의 비슷한 역할을 하는데 구체적으로 어떤 차이가 있는 건지, 중복된 문자가 여러 개 있을 땐 find나 index를 이용해서 어떻게 찾는 지를 알아보고 싶어졌다.

 

728x90
반응형

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

Examples) Chapter 1&2  (0) 2021.12.07
4. Data Type(Bool & Variable)  (0) 2021.12.07
3. Data Type(Dictionary & Set)  (0) 2021.12.06
2. Data Type(List & Tuple)  (0) 2021.12.06
Let me know about "Python"  (0) 2021.12.06