문자열 포맷팅

파이썬에서 문자열 포맷팅은 데이터를 특정 형식으로 표현할 때 매우 유용한 기능입니다.

 

문자열 포맷팅을 왜 사용해야 하는지에 대해서 알아봅니다.

 

이름을 출력하는 예제코드를 작성합니다.

 

코드:

name = "Jay"
info = "My name is " + name
print(info)

 

결과:

My name is Jay

 

My name is 에 이름인 Jay를 더하여 My name is Jay 가 출력되었습니다.


이번엔 나이를 출력하는 예제코드를 작성합니다.

 

코드:

age = 35
info = "I am " + str(age) + " years old."
print(info)

 

결과:

I am 35 years old.

 

나이를 바인딩한 age는 숫자형이므로 str()함수를 이용하여 문자열로 변환 후 문자열을 더해 출력하였습니다. I am 과 years old. 사이에 있어 앞뒤로 덧셈을 이용하였습니다.


이번에는 이름과 나이를 모두 출력해보도록 합니다.

 

코드:

name = "Jay"
age = 35
info = "My name is " + name + " I am " + str(age) + " years old."
print(info)

 

결과:

My name is Jay I am 35 years old.

 

이름과 나이를 문자열 사이사이에 더해 출력하였습니다. 문자열이 길어지면 길어질 수록 내가 원하는 위치에 데이터를 넣기가 어렵습니다. 이처럼 문자열을 잘라 중간중간에 더해 뭔하는 문자열을 만들었습니다. 이러한 과정은 문자열 포맷팅을 사용하면 편리하게 사용할 수 있습니다. 최신 파이썬 3.11 이상의 버전에서는 문자열 포맷팅으로 사용할 수 있는 방법으로 %, .format, f-string 으로 총 3가지가 있습니다. 이제부터 하나씩 알아보도록 합니다.


%포맷팅

% 포맷팅은 C언어계열에서 자주 사용하는 방식으로 파이썬에서도 사용가능합니다. 아래의 코드를 이용하여 어떻게 사용하는지 알아봅니다.

 

코드:

name = "Jay"
info = "My name is %s" % (name)
print(info)

 

결과:

My name is Jay

 

문자열 사이에 %s (문자열) 을 입력 후 문자열의 끝에 %를 입력합니다. () 괄호안에 변수 또는 값을 넣어 %s 문자열 부분에 대입합니다.

 

%s는 name 변수의 값 Jay로 치환됩니다.

 


숫자도 치환 할 수 있습니다.

 

코드:

age = 35
info = "I am  %d years old." % (age)
print(info)

 

결과:

I am  35 years old.

 

정수형 숫자를 치환하기 위해서는 %d (정수형) 을 사용합니다.


% 포맷팅은 아래와 같이 다양한 형식을 제공합니다.

%s - 문자열 (String)
%d - 정수 (Integer)
%f - 부동소수점 (Floating Point)
%.Nf - 고정 소수점 (Fixed Floating Point)
%x / %X - 16진수 (Hexadecimal)
%o - 8진수 (Octal)
%% - 리터럴 % 문자 (Literal % character)

 

필자도 종류가 많아 이부분을 다 기억하고있지 않습니다. 파이썬에서 %포맷특의 특이한점은 %s 문자열로 넣으면 어떤 값이든 자동으로 변환되어 들어갑니다. % 포맷팅을 사용한다면 %s 만 기억해두어도 사용하는데 불편한점이 없습니다.

 

코드:

name = "Jay"
age = 35
info = "My name is %s and I am %s years old." % (name, age)
print(info)

 

결과:

My name is Jay and I am 35 years old.

 

%포맷팅 방식에서 숫자, 문자 모두 %s를 이용하면 문자열 포맷팅이 가능합니다.


.format 을 이용한 포맷팅 방식에 대해서 알아봅니다.

 

문자열이나 문자열을 바인딩하는 변수에 .format을 이용하여 원하는 위치에 문자를 넣을 수 있는 방법입니다.

 

코드:

fruit = "apple"
count = 3
sentence = "I have {} {}s.".format(count, fruit)
print(sentence)

 

결과:

I have 3 apples.

 

문자열에 {} 대괄호를 이용하여 문자열을 넣을 위치를 정해줍니다. .format을 이용하여 넣을 값을 입력하면 {} 가 입력된 순서대로 값이 입력됩니다. 값은 문자열, 정수형, 소수점형등을 가리지 않고 자동으로 입력됩니다.


위치 인덱스를 사용하여 원하는 위치에 값을 넣어줄수 있습니다.

 

코드:

animal = "cat"
legs = 4
sentence = "A {1} has {0} legs.".format(legs, animal)
print(sentence)

 

결과:

A cat has 4 legs.

 

문자열에서 {1} 의 인덱스를 입력합니다. .format에서 값 순서대로 0번부터 시작하여 {번호} 로 써진 값에 값이 입력됩니다.


같은 값을 여러번 사용할 수 있습니다.

 

코드:

food = "bread"
drink = "milk"
sentence = "I have {0} and {1}. I like {0} with {1}.".format(food, drink)
print(sentence)

 

결과:

I have bread and milk. I like bread with milk.

 

{번호}를 문자열에 여러번 입력하여 동일한 값을 여러번 사용할 수 있고 위치 또한 원하는 위치에 값을 넣을 수 있습니다.

{0}은 food가 바인딩한 "bread" 값으로 입력되고 {1}은 drink가 바인딩한 "milk"로 입력되었습니다.


f-string(f-문자열) 포맷팅

이 방법은 파이썬 3.6 이상에서 사용할 수 있으며, 가장 직관적이고 간결한 포맷팅 방법입니다.

 

문자열의 앞에 f를 붙여 사용합니다.

 

코드:

name = "Tom"
sentence = f"My name is {name}."
print(sentence)

 

결과:

My name is Tom.

 

문자열의 앞에 f를 붙여 f-string 으로 사용합니다. 그후 문자열에 {변수} 또는 {값} 형식으로 입력하면 {}안의 값이 입력됩니다. 매우 직관적이어서 사용하기에 편리합니다.

 


여러개의 값을 원하는 위치에 입력하여 사용합니다.

 

코드:

animal = "dog"
sound = "bark"
sentence = f"A {animal} can {sound}."
print(sentence)

 

결과:

A dog can bark.

 

{animal} 값은 dog로 입력되고 {sound} 값은 bark로 입력됩니다. 여러번 원하는 위치에 입력해서 사용해도 됩니다.


수식을 넣어 연산 또한 가능합니다.

 

코드:

apples = 4
oranges = 3
sentence = f"I have {apples + oranges} fruits in total."
print(sentence)

 

결과:

I have 7 fruits in total.

 

4+3의 값인 7이 입력되었습니다. {}안에 수식을 넣어 연산이 가능합니다. f-string 방식이 가장 직관적이기때문에 필자는 주로 이방법을 사용하여 파이썬 코드를 작성합니다. 

% 포맷팅, .format 포맷팅, f-string 포맷팅 방식에 대해서 알아보았습니다.


문자열 메서드

파이썬에서 문자열(String)은 다양한 메서드를 제공하여 문자열을 조작하고 처리할 수 있습니다. 이 메서드들은 문자열을 다룰 때 매우 유용합니다.

 

문자열이나 문자열변수에 .(점)을 찍어 다양한 메서드의 사용이 가능합니다. VS Code등 파이썬 편집기에서 대부분 제공하는 기능으로 .(점)을 찍으면 사용할 수 있는 다양한 메서드를 확인 할 수 있습니다.

 


str.upper()

문자열의 모든 문자를 대문자로 변환합니다.

 

코드:

text = "hello"
result = text.upper()
print(result)

 

결과:

HELLO

 

소문자 hello를 대문자 HELLO로 변환하였습니다.


str.lower()
문자열의 모든 문자를 소문자로 변환합니다.

 

코드:

text = "HELLO"
result = text.lower()
print(result)

 

결과:

hello

 

대문자 HELLO를 소문자 hello로 변환하였습니다.


str.capitalize()
문자열의 첫 번째 문자를 대문자로, 나머지는 소문자로 변환합니다.

 

코드:

text = "hello world"
result = text.capitalize()
print(result)

 

결과:

Hello world

 

hello world 에서 첫번째 문자만 대문자로 변환하여 Hello world로 출력하였습니다.


str.strip()
문자열의 앞뒤 공백이나 특정 문자를 제거합니다.

 

코드:

text = "  hello  "
result = text.strip()
print(result)

 

결과:

hello

 

문자열의 앞뒤 공백이 제거되었습니다. 왼쪽공백을 제거하는 lstrip() 오른쪽 공백을 제거하는 rstrip()도 있습니다. l은 left, r은 right 의 앞글자 입니다.


str.replace(old, new)
문자열 내의 특정 문자열을 다른 문자열로 바꿉니다.

 

코드:

text = "I like apples"
result = text.replace("apples", "bananas")
print(result)

 

결과:

I like bananas

 

apples를 bananas 로 변경하였습니다.

 

전화번호에서 - 부분을 삭제해보도록 합니다.

 

코드:

text = "010-1234-5678"
result = text.replace("-", "")
print(result)

 

결과:

01012345678

 

-를 찾아 "" 빈값으로 변환하였습니다. 빈값으로 변환하면 삭제됩니다. 전화번호의 - 부분만 찾아 삭제하였습니다.


str.split(separator)
문자열을 구분자를 기준으로 분리하여 리스트로 반환합니다. 기본 구분자는 공백입니다.

 

코드:

text = "hello world"
result = text.split()
print(result)

 

결과:

['hello', 'world']

 

인자를 입력하지 않아 기본값인 공백으로 값을 구분하여 리스트로 반환하였습니다. 리스트는 아직 배우지 않았지만 여러개의 값을 가지는 자료구조형 자료형 입니다.

 

구분자를 입력하여 입력한 구분자로 나눌 수 있습니다.

 

코드:

text = "apple,banana,cherry"
result = text.split(",")
print(result)

 

결과:

['apple', 'banana', 'cherry']

 

,(콤마)를 구분자로 입력하여 ,(콤마)를 기준으로 값을 나누어 리스트로 반환하였습니다.


str.join(iterable)
문자열을 구분자로 사용하여 리스트나 튜플 등의 요소들을 하나의 문자열로 결합합니다.

 

코드:

words = ["apple", "banana", "cherry"]
result = ",".join(words)
print(result)

 

결과:

apple,banana,cherry

 

여러개의 값을 가지는 리스트에서 .join을 이용하여 하나의 문자열로 결합하였습니다.


str.find(substring)
문자열에서 특정 부분 문자열(substring)을 찾아 그 시작 위치(인덱스)를 반환합니다. 찾지 못하면 -1을 반환합니다.

 

코드:

text = "I love python"
result = text.find("python")
print(result)

 

결과:

7

 

python을 찾으면 찾은 처음 위치를 반환합니다. python 에서 시작하는 p의 위치인 7을 반환하였습니다.


str.count(substring)
문자열에서 특정 부분 문자열이 몇 번 나타나는지 계산합니다.

 

코드:

text = "banana"
result = text.count("a")
print(result)

 

결과:

3

 

banana 문자열에서 a의 갯수인 3을 반환하였습니다.


str.startswith(prefix)
문자열이 특정 접두사(prefix)로 시작하는지 확인합니다. True 또는 False를 반환합니다.

 

코드:

text = "hello world"
result = text.startswith("hello")
print(result)

 

결과:

True

 

hello world가 hello로 시작하는지 확인하여 hello로 시작하기때문에 True(참)을 반환하였습니다. 거짓일 경우 False를 반환합니다.


str.endswith(suffix)
문자열이 특정 접미사(suffix)로 끝나는지 확인합니다. True 또는 False를 반환합니다.

 

코드:

text = "hello world"
result = text.endswith("world")
print(result)

 

결과:

True

 

hello world 문자열이 world로 끝나기 때문에 True(참)을 반환합니다.


str.isdigit()
문자열이 모두 숫자로 이루어져 있는지 확인합니다. True 또는 False를 반환합니다.

 

코드:

text = "12345"
result = text.isdigit()
print(result)

 

결과:

True

 

문자열 12345는 모두 숫자이기때문에 True(참)을 반환하였습니다.

 

코드:

print("3.14".isdigit())
print("-123".isdigit())

 

결과:

False
False

 

소수점과, - 음수는 .(점)과 -(마이너스) 기호로 인해 False(거짓)을 반환합니다.


str.isalpha()
문자열이 모두 알파벳 문자로 이루어져 있는지 확인합니다. True 또는 False를 반환합니다.

 

코드:

text = "hello"
result = text.isalpha()
print(result)

 

결과:

True

 

hello는 모두 알파벳문자로 이루어졌기때문에 True를 반환하였습니다.


 

더 많은 메서드가 있지만 너무 많아서 어떤 기능을 하는지 모릅니다. 이럴때 ChatGPT를 사용하여 질문하면 더욱더 다양한 기능들을 확인해 볼 수 있습니다.


또는 직접적으로 무슨 기능을 하는 메서드가 있어? 라고 질문을 해도 됩니다. 원하는 기능을 직접적으로 질문하여 답변을 얻을 수 있습니다.

 

문자열 기본

 

파이썬에서 문자열(string)은 문자들의 집합으로, 텍스트 데이터를 다루기 위해 사용됩니다. 문자열은 파이썬에서 가장 많이 사용되는 데이터 타입 중 하나이며, 큰 따옴표(" ")나 작은 따옴표(' ')로 감싸서 생성할 수 있습니다.

 


작은 따옴표(' ')로 감싸서 문자열을 생성해보도록 합니다.

 

코드:

a = 'Hello Python'
print(a)

 

결과:

print("hello python")

 

변수 a는 작은 따옴표(' ') 로 감싼 'Hello Python'을 바인딩 하였고 그값을 출력하였습니다.


큰 따옴표(" ")로 감싸서 문자열을 출력해봅니다.

 

코드:

a = "Hello Python"
print(a)

 

답변:

Hello Python

 

큰 따옴표(" ")로 감싼 문자열 역시 잘 출력되었습니다.


type() 함수를 이용하여  변수의 타입을 확인해봅니다.

 

코드:

a = "Hello Python"
b = 'Hello Python'
print(type(a))
print(type(b))

 

 

결과:

<class 'str'>
<class 'str'>

 

작은 따옴표(' ')  또는 큰 따옴표(" ")로 감싼 데이터는 두개다 문자열 데이터로 str이 타입으로 지정되었습니다. str은 string의 약자로 문자열의 약자입니다.


앞서 print 에서 사용했던 작은 따옴표(' ')  또는 큰 따옴표(" ") 모두 문자열 데이터입니다.

 

코드:

print("hello python")

 

결과:

hello python

 

print에서 문자열을 바로 출력하여 사용하였습니다.

변수를 만들지 않고 바로 print를 이용하여 출력이 가능합니다.

 

아래의 코드로 문자열입니다. 

코드:

"hello python"

 

코드의 활용면에서 변수로 만든것도 아니고 출력을 한것도 아니지만 문자열 로 생성된 데이터 입니다.  코드의 가독성면이나 설명하기 편하도록 문자열을 생성 후 변수에 바인딩하여 진행하도록 하겠습니다.


작은 따옴표(' ')  또는 큰 따옴표(" ")로 나눈 이유로는 우리가 print부분에 다루었습니다.

큰 따옴표(" ") 를 포함한 문자열을 만들고 싶다면 밖을 작은 따옴표(' ') 로 감싼 문자열을 만들면 됩니다.

 

코드:

a = 'say "hello"'
print(a)

 

결과:

say "hello"

 

큰 따옴표(" ")를 출력하기 위해서 작은 따옴표(' ') 로 감싸 에러 없이 큰 따옴표가 잘 출력되었습니다.


반대로 작은 따옴표(' ')를 포함한 문자열을 만들고 싶다면 큰 따옴표(" ")로 감싼 문자열을 만듭니다.

 

코드:

a = "say 'goodbye'"
print(a)

 

 

결과:

say 'goodbye'

 

큰 따옴표(" ") 감싼 문자열로 작은 따옴표는 잘 출력되었습니다.


여러줄의 문자열을 표현하기 위해서 큰따옴표 3개(""" """) 감싸 여러줄의 문자열을 만들 수 있습니다.

 

코드:

a = """여러줄의
문자열
입니다"""
print(a)

 

결과:

여러줄의
문자열
입니다

 

큰따옴표 3개(""" """)로 감싸 여러줄의 문자열을 만들었습니다. 큰따옴표 3개(""" """) 는 a 변수에 대입하지 않았다면 주석으로도 사용가능합니다. a 변수에 바인딩되어 문자열로 생성되었습니다.


작은따옴표 3개(''' ''')로 감싼 데이터 역시 여러줄의 문자열을 만들 수 있습니다.

 

코드:

a = '''작은 따옴표 3개 역시
여러줄의
문자열
입니다'''
print(a)

 

 

결과:

작은 따옴표 3개 역시
여러줄의
문자열
입니다

 

작은따옴표 3개(''' ''')로 감싼 데이터 역시 여러줄의 문자열 데이터 입니다. 작은따옴표 3개(''' ''')  와  큰따옴표 3개(""" """) 로 여러줄의 문자열을 표현하는 방식이 2개나 있는 이유로는 큰따옴표 3개(""")를 문자열에 포함하고 싶다면 작은따옴표 3개(''' ''')로 감싸고 작은따옴표 3개(''')를 문자열에 포함하고 싶다면 큰따옴표 3개(""" """)로 감싸기 위함입니다.


문자열과 숫자형은 생성시에 차이점이 있습니다. 문자열 데이터는 큰 따옴표(" "),작은 따옴표(' ') , 큰따옴표 3개(""" """) , 작은따옴표 3개(''' ''') 로 감싸야합니다.

 

코드:

a = '1'
b = "3.14"
c = 'hello'
d = 1
e = 3.14

print(a,type(a))
print(b,type(b))
print(c,type(c))
print(d,type(d))
print(e,type(e))

 

 

결과:

1 <class 'str'>
3.14 <class 'str'>
hello <class 'str'>
1 <class 'int'>
3.14 <class 'float'>

 

'1'은 문자열(str) 데이터이며, 1은 정수형(int) 데이터입니다. 마찬가지로 "3.14"는 큰따옴표로 감싼 문자열(str) 데이터이고, 3.14는 소수점형(float) 데이터입니다.

이처럼 출력되는 결과가 동일해 보일 수 있지만, 문자열 데이터와 숫자형 데이터는 완전히 다른 데이터 형식입니다.

특히 코드가 길어지거나 라이브러리를 통해 데이터를 받을 때, 제공되는 데이터가 어떤 형식인지 명확하지 않을 수 있습니다. 예를 들어, 1이 출력되었을 때, 그것이 숫자형 1인지 문자열 1인지 모를 수 있습니다. 이러한 경우, type() 함수 등을 사용하여 데이터 타입을 확인하고 사용하는 경우가 많습니다.


이스케이프 시퀀스

 

"이스케이프(escape)"는 "탈출"이라는 의미로, 파이썬의 문자열에서 "이스케이프 시퀀스"는 특별한 문자를 표현하기 위해 사용됩니다. 이스케이프 시퀀스는 백슬래시(\)로 시작하며, 그 뒤에 특정 문자가 따라와서 특정 기능을 수행하거나 특정 문자를 나타내도록 합니다.

\를 키보드에서 찾을려면 [엔터] 버튼 위에 원화표시 [ ₩ |] 키를 입력하면 됩니다. [ ₩ |] 키를 입력하면 프로그램의 개발환경에서는 \(역슬래쉬)로 주로 입력되고 한글등 문서프로그램에서는 ₩(원화) 표시로 입력됩니다.

 

아래의 코드를 작성하여 이스케이프 시퀀스를 확인해봅니다.

 

코드:

a = "hello\npython"
print(a)

 

 

결과:

hello
python

 

hello가 출력되고 줄바꿈이 된다음 python이 출력되었습니다 이는 \n 이 틀벽한 기능을 가지는 이스케이프 시퀀스로 동작하였습니다. 문자열에서 \n을 만나면 줄바꿈을 합니다. 

 

\t 를 만나면 [탭] 의 기능을 합니다.

 

코드:

a = "hello\tpython"
print(a)

 

결과:

hello	python

 

문자열에서 \t를 만나 [탭]으로 여러칸 띄어쓰기 되었습니다.

 

\를 그대로 표현하기 위해서 \\를 이용하여 \를 2번 사용하여 그대로 표현할 수 있습니다.

 

코드:

a = "hello\\python"
print(a)

 

결과:

hello\python

 

\\를 두번 입력하여 \를 그대로 표현하였습니다.

 

 

큰 따옴표(" ")로 감싼 문자열에서 " 를 표현하기 위해서는 \"를 사용합니다.

 

코드:

a = "hello\"python\""
print(a)

 

결과:

hello"python"

 

큰 따옴표(" ")로 감싼 문자열에서 \"를 이용하여 큰따옴표를 그대로 표현하였습니다. \' 를 이용하여 작은 따옴표로 감싼 문자열에서 작은따옴표(')또한 표현 가능합니다.

 

아래는 이스케이프 스퀀스로 동작하는 표 입니다.

이스케이프 시퀀스 설명
\\ 백슬래시(\) 자체로 표시
\' 작은 따옴표(')
\" 큰 따옴표(")
\n 줄바꿈
\t 탭 간격
\r 캐리지 리턴

파이썬을 이용하여 파일이나 폴더를 액세스하는 경우가 많습니다. 파일이나 폴더를 액세스한다는 가정하에 폴더에 접근해보겠습니다.

 

코드:

path = "C:\new"
print(path)

 

결과:

C:
ewfile

 

윈도우에서 파일의 경로를 이동하는 \ 역슬래쉬는 파이썬의 문자열 이스케이스와 동일합니다. 폴더의 이름이 new폴더로 C드라이브에 존재합니다. 파일을 액세스 하기 위해 파일의 경로를 입력하였는데 \n을 만나 이스케이프 시퀀스로 동작하여 줄바꿈이 되었습니다. 이럴경우 정상적으로 파일이나 폴더의 경로를 불러오지 못합니다.

 

hello 폴더를 액세스 해보도록 합니다.

 

코드:

path = "C:\hello"
print(path)

 

결과:

C:\hello

 

C드라이브의 hello 폴더는 \h가 이스케이프 시퀀스로 동자하지 않기때문에 정상적으로 표시되었습니다. 파이썬에서 파일이나 폴더를 액세스 하기위해서 n이나 t로 시작하는 폴더를 만들지 않으면 됩니다. 하지만 이런 프로그램은 절대 만들면 안됩니다. 프로그램을 만들어 배포한다고 하면은 사용자는 어떤 이름으로도 만들 수 있기때문에 잠재적인 오류가 발생할 수 있는 프로그램입니다.

 

몇가지 방법으로 이스케이프 시퀀스로 동작하지 않도록 할 수 있습니다.

 

\\를 두번 입력하여 \ 그대로 표시하도록 합니다.

 

코드:

path = "C:\\new"
print(path)

 

결과:

C:\new

 

\\를 사용하여 \를 그대로 보여줘 폴더의 경로를 잘 액세스 하였습니다.

 

문자열 앞에 r을 붙여 문자열 그대로 출력되도록 할 수 있습니다.

 

코드:

path = r"C:\new"
print(path)

 

결과:

C:\new

 

파이썬에서 r 리터럴은 "raw string"을 나타내는 데 사용됩니다. "raw string"은 문자열 내의 이스케이프 시퀀스(예: \n, \t 등)를 처리하지 않고, 있는 그대로의 문자열로 취급합니다. 파일 또는 폴더의 경로를 처리할때 매우 편리합니다.


문자열의 연산

 

문자열의 연산에 대해서 알아봅니다.

 

문자열을 + 덧샘 연산을 이용해 문자열을 더할 수 있습니다.

 

코드:

a = "hello"
b = "python"
print(a+b)

 

결과:

hellopython

 

문자열의 덧샘은 문자열을 이어붙인 형태 입니다.

 

변수의 생성시에도 덧샘연산을 이용하여 생성이 가능합니다.

 

코드:

a = "hello" + 'python'
print(a)

 

결과:

hellopython

 

결과 역시 동일합니다.

 

문자열 변수를 생성할때는 덧샘 기호를 생략해도 됩니다.

 

코드:

a = "hello""python"'123'
print(a)

 

결과:

hellopython123

 

문자열의 생성시에는 +덧샘을 생략하여 생성이 가능하며 문자열을 이어붙인 형태로 출력됩니다.


문자열 변수를 이용하여 덧샘을 생략하면 안됩니다. 아래의 코드는 잘못된 코드 입니다.

 

코드:

a = "hello"
b = "python"
print(ab)

 

결과:

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Cell In[12], line 3
      1 a = "hello"
      2 b = "python"
----> 3 print(ab)

NameError: name 'ab' is not defined

 

에러가 발생합니다. 에러의 원인으로는 ab 라는 이름이 정의되지 않아서 발생하는 오류로 ab는 변수로 선언되지 않아서 발생하는 오류 입니다.


문자열은  (*)곱셈 연산이 가능합니다.

 

코드:

a = "hello"
print(a*3)

 

결과:

hellohellohello

 

문자열의 곱셈 연산은 문자열을 곱한 횟수만큼 이어붙인 형태가 됩니다.

 

아래와 같은 코드형태는 터미널에 값을 출력할때 다른 값들과 구분하기 위하여 자주 사용하는 방법입니다.

 

코드:

print("="*50)
print("값출력1")
print("="*50)

print("-"*50)
print("값출력2")
print("-"*50)

 

결과:

==================================================
값출력1
==================================================
--------------------------------------------------
값출력2
--------------------------------------------------

 

문자열의 곱셈연산을 이용하여 =과 -을 손쉽게 여러번 출력하였습니다. 위와 같은 형태의 방식을 사용하면 터미널에 다른 값들과 분리되어 내가 원하는 값만 출력하여 보기가 편합니다.


문자열의 (/)나누기 연산은 허용하지 않습니다. 아래의 코드를 에러가 발생합니다.

 

코드:

a = "hello"
print(a/2)

 

결과:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[17], line 2
      1 a = "hello"
----> 2 print(a/2)

TypeError: unsupported operand type(s) for /: 'str' and 'int'

 

발생하는 에러의 원인으로는 서로다른 타입을 /(나누기)로 했을때 연산할 수 없다는 에러로 문자열은 나눌 수 없습니다.


문자열의 빼기 연산또한 허용하지 않습니다. 아래의 코드는 에러가 발생합니다.

 

코드:

a = "hello"
b = "python"
print(a-b)

 

결과:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[18], line 3
      1 a = "hello"
      2 b = "python"
----> 3 print(a-b)

TypeError: unsupported operand type(s) for -: 'str' and 'str'

 

문자열과 문자열은 뺄수가 없다는 에러메시지가 출력되었습니다. 문자열의 뺴기 연산은 동작하지 않습니다.


len() 함수를 이용하여 문자열의 길이를 구할 수 있습니다.

 

코드:

a = "hello"
print(len(a))

 

결과:

5

 

len()함수안에 길이를 구하고싶은 문자열 또는 변수를 넣으면 길이를 반환합니다. 

hello 문자열의 길이인 5를 반환하였습니다.


공백도 문자열 입니다. 

 

코드:

a = "hello python"
print(len(a))

 

결과:

12

 

hello python 에서 띄어쓰기 된 공백도 포함한 12를 반환하였습니다. 공백도 문자열로 포함하여 계산됩니다. 

공백은 없는게 아닌 공백의 값이 포함되어 있는 문자열 입니다.


문자열의 형변환

 

int() 함수를 이용하여 문자열을 정수형으로 변환이 가능합니다.

 

코드:

a = '1'
b = int(a)
print(b,type(b))

 

결과:

1 <class 'int'>

 

문자열 '1'은 int() 함수를 이용하여 숫자형 1로 형변환이 이루어졌습니다. type()함수로 변수의 타입을 출력하면 int형으로 형변환 되었습니다. 


float() 함수를 이용하여 문자열을 소수점형으로 변환이 가능합니다.

 

코드:

a = '3.14'
b = float(a)
print(b,type(b))

 

결과:

3.14 <class 'float'>

 

소수점 문자열이 float() 함수를 이용하여 소수점형인 float으로 형 변환이 되었습니다.


문자열을 정수 또는 소수점형으로 변환할때 주의사항으로는 문자열에 숫자가 아닌 문자가 포함되면 형 변환시 에러가 발생합니다. 정수 또는 소수점만으로 이루어진 문자열만으로 형변환을 해야합니다.

아래의 코드는 에러가 발생합니다.

 

코드:

a = 'hello'
b = int(a)
print(b,type(b))

 

결과:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In[7], line 2
      1 a = 'hello'
----> 2 b = int(a)
      3 print(b,type(b))

ValueError: invalid literal for int() with base 10: 'hello'

 

hello를 숫자로 변환시에 불가능하여 에러가 발생하였습니다. 문자가 하나라도 포함이 되었다면 숫자 또는 소수점형으로 형변환이 불가능합니다.


int 정수형 을  str() 함수를 이용하여 문자열로 형변환을 하는 방법에 대해서 알아봅니다.

 

코드:

a = 10
b = str(a)
print(b,type(b))

 

결과:

10 <class 'str'>

 

str()함수를 이용하여 숫자 10을 문자열 10으로 형변환 하였습니다. 어떠한 숫자도 문자열로 형변환이 되기때문에 숫자를 문자로 형변환 할때는 특별하게 주의할 사항이 없습니다.


소수점형 float을 str()함수를 이용하여 문자열로 형변환을 하는 방법에 대해서 알아봅니다.

 

코드:

a = 3.14
b = str(a)
print(b,type(b))

 

 

결과:

3.14 <class 'str'>

 

str()함수를 이용하여 소수점 3.14를 문자열로 형변환 하였습니다.


다른타입끼리 연산을 할경우 원하는 타입으로 변환 후 연산을 합니다.

 

코드:

a = 10
b = '10'
c = a + int(b)
print(c,type(c))

 

결과:

20 <class 'int'>

 

숫자 10을 저장한 a 변수와 문자열 '10'을 저장한 b 변수가 있습니다.  b를 정수형으로 변환 후 덧샘연산을 하여 결과 값인 20이 출력되었습니다. 결과 값 역시 int 형입니다. 숫자형 int + 문자열형 str 은 연산이 되지 않기때문에 하나의 형은 동일한 형으로 타입을 변환하였습니다.


숫자를 문자열로 변환하여 연산도 가능합니다.

 

코드:

a = 10
b = '10'
c = str(a) + b
print(c,type(c))

 

결과:

1010 <class 'str'>

 

숫자 10을 문자열로 형변환 후 문자열 '10' 과 문자열 '10'을 더한 '1010'이 출력되었습니다. 형 또한 str로 문자열 형입니다.

다른 타입끼리 연산을 할때는 원하는 형으로 변환 후 연산합니다.


문자열의 인덱싱

 

문자열의 인덱싱은 문자열 내 각 문자에 번호(인덱스)를 매겨서 특정 위치의 문자를 쉽게 찾는 방법입니다. 파이썬의 인덱스는  0부터 시작하며, 이를 이용해 원하는 위치의 문자를 빠르게 추출할 수 있습니다.

 

코드:

a = "hello python"
print(a[0])
print(a[6])

 

결과:

h
p

 

"hello python" 문자열의 인덱싱 방법은 문자열 또는 문자열변수에 []대괄호 를 붙이고 인덱싱 하고자 하는 위치의 번호를 붙여 줍니다. 번호는 왼쪽에서 오른쪽 방향 -> 으로 0부터 값이 커지며 늘어납니다.

 

a[0]은 0번째 문자를 인덱싱하여 h를 출력하였고, a[6]은 6번째 문자를 인덱싱한 p가 출력되었습니다.

 

아래 그림을 보면 0 부터 시작하여 -> 으로 갈수록 값이 1씩 커지며 인덱싱이 가능합니다.

 

 


공백부분을 인덱싱해보도록 합니다.

코드:

a = "hello python"
print(a[5])

 

결과:

아무값도 나오지 않는것 처럼 보입니다.

 

공백을 인덱싱하였을경우 공백의 값이 인덱싱되어 출력되기때문에 아무값도 보이지 않습니다. 공백이 출력된 것입니다.


 

값의 범위를 벗어난 값을 인덱싱할경우 에러가 발생합니다.

 

코드:

a = "hello python"
print(a[12])

 

결과:

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
Cell In[4], line 2
      1 a = "hello python"
----> 2 print(a[12])

IndexError: string index out of range

 

값의 범위를 벗어났다는 에러가 발생합니다. 파이썬은 에러가 발생할경우 그자리에서 파이썬 코드가 종료됩니다.


왼쪽에서 오른쪽으로 -> 인덱싱을 하였습니다. 오른쪽에서 왼쪽으로 <- 인덱싱하는 방법에 대해서 알아봅니다.

 

코드:

a = "hello python"
print(a[-1])
print(a[-6])

 

결과:

n
p

 

결과 a[-1]은 n이, a[-6]은 p가 출력되었습니다. 오른쪽에서 왼쪽으로 <- 인덱싱을 할경우 음수 값을 넣어주면 됩니다. 음수값으로 인덱싱할경우 -1 부터 시작합니다.

 

아래 표에서 확인 하듯이 -1은 n을, -6은 p를 인덱싱하였습니다. 음수의 인덱싱 역시 -12보다 작은값 -13부터는 인덱스 값이 존재하지 않기때문에 a[-13]은 에러가 발생합니다. 

 

 

-인덱싱의 경우 마지막에 들어온 값을 찾거나 문자열의 길이가 길어질때 마지막 요소부터 빠르게 접근할 수 있어 자주 사용합니다.


문자열의 슬라이싱

 

문자열에서 원하는 부분 만큼 가져올 수 있는 슬라이싱이 있습니다. 슬라이싱은 자르다의 의미로 문자열에서 원하는 문자열 만큼 자를 수 있습니다.

 

코드:

a = "hello python"
print(a[0:7])

 

결과:

hello p

 

슬라이싱은 문자열 또는 문자열 변수에 [시작:끝-1] 까지 여러 문자열을 잘라 낼 수 있습니다. 중요한점은 시작은 시작인덱스 번지부터 시작하지만 끝은 끝-1 까지 입니다.

 

아래 그림에서 확인해보면 [0:7]의 의미는 0부터 시작하여 7-1 까지의 값을 슬라이싱 한다는 의미입니다.


슬라이싱의 경우 앞의 시작 값의 생략이 가능합니다.

 

코드:

a = "hello python"
print(a[:7])

 

결과:

hello p

 

앞의 값을 생략할경우 처음 위치에서부터 시작합니다. [:7] 은 [0:7]과 동일합니다.


"hello python"에서 python 부분만 슬라이싱 해봅니다.

 

코드:

a = "hello python"
print(a[6:12])

 

결과:

python

 

6부터 시작하여 12-1 까지 슬라이싱 하여 python 부분만 잘라내업니다.

 

 


슬라이싱의 경우 끝의 값도 생략이 가능합니다.

 

코드:

a = "hello python"
print(a[6:])

 

결과:

python

 

끝 값을 생략시 마지막 값까지 자동으로 입력됩니다.


음수 인덱스 번호를 입력하여 슬라이싱도 가능합니다.

 

코드:

a = "hello python"
print(a[-6:])

 

결과:

python

 

시작위치를 -6부터 끝까지 슬라이싱 하였습니다. -로 값을 넣었다고 해서 <- 방향으로 슬라이싱 되지 않습니다. 위치만 음수로 지정한 것으로 슬라이싱은 -> 방향으로 진행됩니다.


 

문자열의 모든 부분을 슬라이싱 할 수있습니다.

 

코드:

a = "hello python"
print(a[:])

 

결과:

hello python

 

슬라이싱의 시작과 끝값을 모두 생략하여 모든 문자열을 슬라이싱 하였습니다


3번째 값을 추가하여 슬라이싱의 간격을 추가할 수 있습니다. [시작:끝:간격] 으로 간격을 생략할경우 1이 되어 -> 방향으로 값을 슬라이싱 합니다. 간격의 값을 수정하여 원하는 간격으로 슬라이싱 할 수 있습니다.

 

코드:

a = "123456789"
print(a[::2])

 

결과:

13579

 

[::2] 는 슬라이싱의 3번째 값을 추가하였습니다. [시작:끝:간격] 으로 시작과 끝 값을 입력하지 않아 모든 값을 선택 하였습니다. 간격은 2로 입력하여 슬라이싱의 2칸마다 슬라이싱하여 자른 값이 출력되었습니다. 간격을 3으로 할경우 3칸마다 4로 할경우 4칸마다 슬라이싱합니다. 숫자가 저장된 문자열에서 홀수만 출력하였습니다. 


짝수만 출력하기 위해서는 시작위치를 2가 저장된 1의 위치에서 부터 시작하면 됩니다.

 

코드:

a = "123456789"
print(a[1::2])

 

결과:

2468

 

시작번지를 1번지로로 지정하여 숫자 2부터 2칸씩 띄어 홀수만 출력하였습니다.


문자열을 역순으로 뒤집을 수도 있습니다.

 

코드:

a = "123456789"
print(a[::-1])

 

결과:

987654321

 

마지막 간격의 값을  -1로 하면 문자열을 역순으로 뒤집어 슬라이싱 하였습니다. -2로 할경우 역순으로 2칸씩 띄어 슬라이싱하고 -3으로 할경우 역순으로 3칸씩 띄어 슬라이싱 합니다.


문자열의 불변성

파이썬의 문자열은 불변성이라는 특징을 가지고 있습니다. 한번 생성된 문자열은 변경할 수 없습니다. 

아래의 코드를 이용하여 확인해봅니다.

 

코드:

a = "hello python"
a[0] = 'H'

 

결과:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[58], line 2
      1 a = "hello python"
----> 2 a[0] = 'H'

TypeError: 'str' object does not support item assignment

 

"hello python"을 저장하고있는 a변수의 0번째 위치인 소문자 h를 대문자로 변경하고 싶어 a[0] = 'H'를 이용하여 대문자 H로 변경하는 코드를 넣었습니다. 문자열은 변경할 수 없다는 에러가 발생합니다.

 

파이썬에서는 문자열이 한번 생성이 되고나면 변경할 수 없습니다. 그럼 "hello python"에서 소문자 h를 대문자 H로 어떻게 하면 변경이 가능할까요? 변경은 불가능하지만 H로 변한 값이 나오도록 할 수 있습니다.

 

코드:

a = "hello python"
print(a)
a = "Hello python"
print(a)

 

결과:

hello python
Hello python

 

문자열을 변경하는게 아닌 새로운 문자열을 만들고 다시 바인딩합니다.

 

대문자 H로된 Hello python을 다시 바인딩하였습니다. 컴퓨터의 새로운 메모리 공간에 Hello python 문자열이 생성되고 그 주소 값을 a가 바인딩하였습니다. 소문자 h로 시작하는 hello python은 아무도 바인딩 하지 않아 메모리상에 쓰레기로 남은 상태 입니다. 파이썬에서는 가비지 컬렉터가 동작하여 쓰레기 값은 자동으로 메모리에서 해제하여 비워둡니다. 문자열은 변경 불가능하기 때문에 새로운 문자열을 생성후 다시 바인딩합니다.

 

 

 


슬라이싱과 문자열의 연산을 활용하여 소문자 h를 대문자로 변경 할 수 있습니다.

 

코드:

a = "hello python"
a = 'H' + a[1:]
print(a)

 

결과:

hello python
Hello python

 

슬라이싱과 문자열의 연산을 통해 소문자 h를 대문자 H로 변경하였습니다. 이 역시 Hello python의 문자열이 새로운 메모리 공간에 저장되고 소문자 hello python은 바인딩이 해제되어 메모리 공간에서 삭제됩니다.

 


새로운 변수를 이용하여 문자열을 변경하여 사용해보도록 합니다.

 

코드:

a = "hello python"
b = 'H' + a[1:]
print(b)

 

결과:

Hello python

 

문자열을 만들어 b변수에 바인딩하고 그 값을 출력하였습니다. 대문자로 변경된 Hello python이 출력되었습니다.

 

이경우 a는 여전이 "hello python"을 바인딩하고 b는 새로운 문자열인 "Hello python"을 바인딩하였습니다.


 

숫자형 변수는 정수, 소수점 등을 저장할 수 있느 데이터 타입입니다.

 


정수형 데이터를 저장하고 그 값을 출력해봅니다.

 

코드:

a = 10
b = -5
c = 0
print(a)
print(b)
print(c)

 

결과:

10
-5
0

 

10, -5, 0 모두 정수형으로 값이 출력되었습니다. 소수점이 없는 숫자를 정수형 숫자데이터라고 부릅니다. 파이썬은 데이터를 보고 형을 자동으로 결정하는 [동적타이핑] 형식을 따릅니다. 데이터를 보고 파이썬이 알아서 정수형 데이터 타입으로 결정합니다.


변수의 데이터 타입을 확인하기 위해서는 type()함수를 사용합니다.

 

코드:

a = 10
b = -5
c = 0
print(type(a))
print(type(b))
print(type(c))

 

결과:

<class 'int'>
<class 'int'>
<class 'int'>

 

출력결과 10, -5, 0 모두 정수형 타입인 int로 타입이 결정되었습니다. int 는 정수 integer의 줄임 말로 파이썬 프로그램에서 int로 표현합니다.


소수점이 있는 데이터 타입인 소수점형 데이터를 만들고 그 값과 타입을 출력해보도록 합니다.

 

코드:

a = 3.14
b = 10.0
c = 0.0
print(a, type(a))
print(b, type(b))
print(c, type(c))

 

결과:

3.14 <class 'float'>
10.0 <class 'float'>
0.0 <class 'float'>

 

3.14, 10.0, 0.0 모두 소수점형 데이터 타입인 float으로 결정되었습니다. 10.0, 0.0도 소수점 뒤의 값이 0이지만 .0으로 소수점형으로 결정됩니다. float은 floating-point number의 약자입니다. 여기서 floating은 "떠다니는"을 의미하며, 이는 배가 물 위에 떠 있는 모습을 연상시킬 수 있습니다. 배가 물 위에 떠다니듯이, float형 데이터는 소수점의 위치가 고정되지 않고 유동적으로 변할 수 있는 특징이 있습니다. 

 


0과 0.0은 다른 데이터타입입니다.

 

코드:

a = 0
b = 0.0
print("0",type(a))
print("0.0",type(b))

 

결과:

0 <class 'int'>
0.0 <class 'float'>

 

0은 정수형인 int 타입이고, 0.0은 소수점형인 float 타입입니다. 프로그래밍 언어에서 타입을 나누는 이유로는 효과적인 데이터 저장 및 처리를 들 수 있습니다. 정수형(int)과 실수형(float)을 구분함으로써 프로그램은 메모리를 더 효율적으로 사용하고, 연산 속도를 최적화할 수 있습니다. 예를 들어, 정수형은 실수형보다 메모리를 적게 차지하며, 정수에 대한 연산은 실수에 대한 연산보다 빠르게 수행될 수 있습니다.


소수점형으로 만들기 위해서는 .0을 붙여 만들어야 합니다.

 

코드:

a = 1
b = 1.0
print("1",type(a))
print("1.0",type(b))

 

 

결과:

1 <class 'int'>
1.0 <class 'float'>

 

1은 정수 1.0은 소수 타입으로 소수점형으로 변수를 만들때는 .0을 붙여 변수를 생성합니다.


숫자형 데이터의 사칙연산에 대해서 알아봅니다. 사칙연산은 더하기(+), 뺴기(-), 곱하기(*), 나누기(/) 입니다. 프로그램에서 곱하기는 소문자 x가 아닌 *별을 사용합니다. 

정수형 데이터만을 이용하여 사칙연산을 해보도록 합니다.

 

코드:

a = 15
b = 3
print(a+b,type(a+b))
print(a-b,type(a-b))
print(a*b,type(a*b))
print(a/b,type(a/b))

 

결과:

18 <class 'int'>
12 <class 'int'>
45 <class 'int'>
5.0 <class 'float'>

 

더하기, 빼기, 곱하기, 나누기의 결과가 잘 출력되었습니다. 조금 특이한 점이 있는데 / 나누기의 연산을 하면  정수형끼러 연산을 하지만 결과의 값은 항상 소수점형으로 나누기의 결과값이 생성됩니다.


정수와 소수점형이 포함된 연산을 해보도록 합니다.

 

코드:

a = 15
b = 3.0
print(a+b,type(a+b))
print(a-b,type(a-b))
print(a*b,type(a*b))
print(a/b,type(a/b))

 

결과;

18.0 <class 'float'>
12.0 <class 'float'>
45.0 <class 'float'>
5.0 <class 'float'>

 

정수와 소수점형간 연산을 할경우 더 복잡한 데이터를 저장할 수 있는 타입인 float(소수점형)으로 결과값이 생성됩니다. 

15와 3.0을 더하면 18.0이됩니다. 18이 아닌 18.0으로 소수점형이 포함되어 있는 연산이기때문에 결과값도 소수점형으로 출력됩니다.


우리가 사용하는 컴퓨터는 0과1의 두가지 데이터만으로 연산을 하고있습니다. 이런 컴퓨터의 특성으로 인해 나누기의 연산의 경우 정확한 연산이 어렵습니다. 아래의 코드의 예를 들어보겠습니다.

 

코드:

a = 10.0
b = 3.0
print(a/b)

 

결과:

3.3333333333333335

 

컴퓨터에서 float은 2진 부동소수점으로 저장됩니다. 이는 10진수로 나타낼 때 정확하게 표현되지 않을 수 있습니다. 예를 들어, 1/3을 10진수로 표현하면 무한소수인 0.3333...이 나오듯이, 컴퓨터는 특정 숫자를 정확하게 표현하지 못하고 근사치로 표현하게 됩니다. 일반적인 상황에서는 크게 문제가 발생하지 않지만 안전 또는 돈을 다루는 곳에서는 근사값으로 사용할 경우 크게 문제가 발생 할 수 있습니다. 이부분에 유의하여 사용해야 합니다.


사칙연산 이외에 나누기를 할때 나머지를 구하는 % 나머지 연산이 있습니다.

 

코드:

a = 10
b = 4
print(a%b)

 

결과:

2

 

%는 나머지 연산으로 10을 4로 나누었을때 나머지인 2가 출력되었습니다.


몫을 구하는 연산인 // 입니다. 나누기를 2번 입력합니다.

 

코드:

a = 15
b = 4

print(a//b)

 

결과:

3

 

//는 몫 연산으로 15를 4로 나누었을때 몫인 3일 출력되었습니다.


** 곱하기를 두번 입력하여 거듭제곱의 연산도 가능합니다.

 

코드:

a = 2
b = 8

print(a**b)

 

결과:

256

 

** 곱하기를 두번하면 거듭제곱의 연산이 가능합니다. 2**8은 2*2*2*2*2*2*2*2 로 2를 8번 곱한 결과와 동일합니다.


복합할당연산자에 대해 알아봅니다. 아래와 같이 자기 자신의 값에 연산을 하는 경우가 있습니다,

 

코드:

a = 1
a = a + 1
print(a)

 

결과:

2

 

a = 1 로 처음에 1의 값이 바인딩 되었습니다. a = a + 1 의 연산은 =을 기준으로 오른쪽 부터 연산을 합니다. 1 + 1을 연산하여 그값인 2를 다시 a에 바인딩하여 결과값을 출력해보면 2의 값이 출력되었습니다.

 

이와같은 연산과 할당을 한번에 할 수 있는 방법이 있습니다.

이러한 방식의 연산을 복합할당연산자 라고 합니다.

 

코드:

a = 1
a += 1
print(a)

 

결과:

2

 

a += 1로 a = a + 1과 동일한 연산을 합니다. 자신의 값에 1을 더해 다시 바인딩하는 연산입니다. 복합할당 연산자를 이용하면 코드를 간결하게 유지할 수 있습니다. 

 

복합할당연산자로 사용할수 있는 연산은 아래와 같습니다.

  • 더하기(+=):
    • a += b는 a = a + b와 동일합니다.
  • 빼기(-=):
    • a -= b는 a = a - b와 동일합니다.
  • 곱하기(*=):
    • a *= b는 a = a * b와 동일합니다.
  • 나누기(/=):
    • a /= b는 a = a / b와 동일합니다.
  • 정수 나누기(//=):
    • a //= b는 a = a // b와 동일합니다.
  • 나머지(%=):
    • a %= b는 a = a % b와 동일합니다.
  • 거듭제곱(**=):
    • a **= b는 a = a ** b와 동일합니다.

 

 


프로그램에서 연산자의 우선순위가 있습니다.

 

코드:

print(10 + 4 * 2)

 

결과:

18

 

 

사칙연산의 우선순위는 곱하기, 나누기 연산이 더하기, 빼기 연산보다 더 높은 우선순위를 가지고 있기때문에 4*2 가먼저 계산되어 8이되고 그다음 연산인 10 + 8 이 계산되어 18이 출력되었습니다.

 

곱셈, 나눗셈, 나머지 연산자 *, /, //, % 는 동일한 연산자 우선순위를 가지며 왼쪽부터 계산됩니다.

덧셈, 뺄셈 연산자 +, - 는 동일한 연산자 우선순위를 가지며 왼쪽부터 계산됩니다.

 

아래는 파이썬의 연산자 우선순위 표 입니다. () 괄호가 가장 높은 연산자 우선순위를 가지며 = 대입연산자가 가장 낮은 연산자우선순위를 가지고 있습니다. 덧셈, 뺄셈 보다 곱셈, 나눗셈이 더 높은 연산자 우선순위를 가지고 있어 위의 코드에서 곱셈부터 계산을 하였습니다. 우선순위가 동일할 경우 왼쪽 에서 오른쪽으로 먼저 나오는것부터 계산합니다.

우선순위 연산자 설명 예시
1 () 괄호, 가장 높은 우선순위 (2 + 3) * 4
2 ** 지수(거듭제곱) 2 ** 3
3 +x, -x, ~x 단항 연산자(양수, 음수, 비트 NOT) -3, +2, ~x
4 *, /, //, % 곱셈, 나눗셈, 정수 나눗셈, 나머지 2 * 3, 10 / 2
5 +, - 덧셈, 뺄셈 3 + 2, 7 - 5
6 <<, >> 비트 시프트(왼쪽, 오른쪽) 1 << 2, 4 >> 1
7 & 비트 AND 3 & 2
8 ^ 비트 XOR 3 ^ 2
9 | 비트 OR 3 | 2
10 in, not in, is, is not,
<, <=, >, >=, ==, !=
비교 및 멤버십 연산자 a < b, x is y
11 not 논리 NOT not True
12 and 논리 AND True and False
13 or 논리 OR True or False
14 if - else 삼항 연산자 x if x > 0 else -x
15 0 대입 연산자 a = 5, a += 3

 

 


 

연산자의 우선순위는 () 괄호가 가장 높기때문에 아래과 같이 수식에 괄호를 적극적으로 활용하여 코드의 가독성을 높힐 수 있습니다.

 

코드:

print(10 + (4 * 2))

 

결과:

18

 

(4*2) 부분에 괄호를 넣었습니다. 괄호를 넣지 않아도 곱셈의 연산자 우선순위가 덧셈보다 빨라 먼저 계산됩니다. 그럼에도 () 괄호를 넣어 먼저 계산함을 확실하게 코드에 적용하였습니다. 코드를 해석할때 연산자 우선순위에 대해서 알 필요없이 ()괄호 부분부터 계산이 되는것을 알기때문에 더 빨리 코드의 해석이 가능하고 코드가 정확해졌습니다.


2진수, 8진수, 16진수의 데이터를 표현하는 방법에 대해서 알아봅니다. 2진수, 8진수, 16진수 또한 정수형 데이터로 각각의 값을 생성 후 바인딩 할 수 있습니다. 정수형 숫자 10을 2진수, 8진수, 16진수로 표현하는 코드입니다.

 

코드:

binary = 0b1010  # 2진수
octal = 0o12  # 8진수
hexadecimal = 0xA  # 16진수

print(f"2진수 1010: ", binary)
print(f"8진수 12:", octal)
print(f"16진수 A:", hexadecimal)

 

결과:

2진수 1010:  10
8진수 12: 10
16진수 A: 10

 

0b 숫자 0과 b가 조합된 값을 앞에 붙이면 1010은 2진수의 값입니다. 0b1010은 2진수로 표현된 정수 10입니다. 2진수는 0과 1 두가지의 값만 가질 수 있습니다.

0o 숫자 0과 소문자o를 조합된 값을 앞에 붙이면 8진수 값입니다. 0o12 는 8진수로 표현된 정수 10입니다.  8진수는 0~7까지 총 8개의 값을 가질 수 있습니다.

0x 숫자 0과 소문자 x를 조합된 값을 앞에 붙이면 16진수 값입니다. 0xA는 16진수료 표현된 정수 10입니다. 16진수는 0에서 F까지 총 15개의 값을 가질 수 있습니다 0~9까지는 숫자로 동일하고 10=A, 11=B, 12=C, 13=D, 14=E, 15=F 로 표시합니다.


2진수, 8진수 16진수로 저장된 값의 타입을 확인하면

 

코드:

binary = 0b1010  # 2진수
octal = 0o12  # 8진수
hexadecimal = 0xA  # 16진수

print("binary:",type(binary))
print("octal:",type(octal))
print("hexadecimal:",type(hexadecimal))

 

결과:

binary: <class 'int'>
octal: <class 'int'>
hexadecimal: <class 'int'>

 

놀랍게도 모두 정수형입니다. 우리가 컴퓨터에 저장하는 모든 데이터는 사실 2진수 데이터인 0과 1입니다. 입력을 2진수, 8진수, 16진수로 했을 뿐이지 저장된 값은 정수형으로 동일합니다.


정수형을 소수점형으로 소수점형을 정수형으로 형을 변환하는 방법에 대해서 알아봅니다.

 

정수형을 소수점형으로 변환하기 위해서는 float()함수를 이용합니다.

 

코드:

a = 10
b = float(a)

print(b,type(b))

 

결과:

10.0 <class 'float'>

 

정수형 데이터 10을 을 바인딩한 a변수를 float(a)함수에 입력하였고 그값을 b에 다시 바인딩하였습니다. b값을 출력해 보면 10.0이 출력되고 소수점형 타입인 float으로 형변환이 잘되었습니다.

 

 

소수점형을 정수형으로 변환하기 위해서는 int()함수를 사용합니다.

 

코드:

a = 3.14
b = int(a)

print(b,type(b))

 

결과:

3 <class 'int'>

 

소수점형 3.14를 정수형으로 형변환하여 3이되었습니다. 주의할 점은 소수점 이하의 데이터를 정수형으로 변환시 사라집니다.


파이썬에서는 정수형 변수를 저장할때 특이한 점이 있습니다.

 

값이 저장된 메모리 주소를 확인하기 위해서 id()함수를 사용하였습니다. 아래의 코드를 작성해봅니다.

 

코드:

a = 10
b = 10
print(id(a))
print(id(b))

 

결과:

140725725706968
140725725706968

 

출력되는 결과는 프로그램의 실행 시점마다 또는 컴퓨터 마다 다를 수 있습니다.

a 는 10을 바인딩하고 b도 10일 바인딩합니다. 메모리의 주소를 확인해보면 동일한 메모리의 주소를 카르키고 있습니다.

이는 파이썬 메모리를 관리하는 방법으로 동일한 값을 바인딩하고 있기때문에 하나의 10의 값을 가르켜 메모리를 절약합니다.

 

정수 256까지는 동일한 값을 가르킵니다.

 

코드:

a = 256
b = 256
print(id(a))
print(id(b))

 

결과:

140725725714840
140725725714840

 

256까지는 동일한 메모리 주소를 가르킵니다. 파이썬에서 256까지의 정수를 저장하는 공간을 할당 받아두어 미리 저장된 값을 사용하였습니다.

 

257부터는 다른 메모리 주소를 카르킵니다.

 

코드:

a = 257
b = 257
print(id(a))
print(id(b))

 

결과:

2535631859792
2535631859088

 

257부터는 파이썬에서 미리 확보하지 않아 다른 메모리주소를 카르킵니다.

 

 

소수점형은 동일한 메모리주소를 가르키지 않습니다.

 

코드:

a = 3.14
b = 3.14
print(id(a))
print(id(b))

 

결과:

2535630303792
2535630306096

 

소수점의 경우는 동일한 메모리주소를 가르키지 않습니다. 소수의 데이터를 미리 메모리 공간을 확보하기 위해서는 너무 많은 데이터가 필요하기때문에 합리적이지 않기때문입니다.


 

변수는 데이터를 저장하기 위해 메모리에 할당된 이름을 가진 공간입니다. 프로그래밍에서 변수는 특정 값을 저장하고, 이 값을 필요에 따라 참조하거나 변경할 수 있게 해줍니다. 예를 들어, 어떤 숫자, 문자열, 객체 등의 데이터를 저장하고 사용할 때 변수를 이용하여 그 데이터를 프로그램 내에서 쉽게 다루고 조작할 수 있습니다.

변수를 사용하는 이유는 코드의 가독성과 유지보수성을 높이고, 복잡한 계산이나 데이터 처리에서 동일한 값을 여러 번 사용할 때 효율성을 극대화하기 위함입니다. 변수를 정의하고 사용하는 것은 프로그래밍의 기본적인 과정이며, 이를 통해 복잡한 문제를 쉽게 해결할 수 있는 도구로 활용됩니다.

 


변수는 값을 저장하기 위해 이름을 부여한 메모리 공간입니다. 변수를 선언할 때는 = 기호를 사용하여 값을 할당합니다. 
=은 할당연산자로 수학에서의 같다와는 다릅니다. (프로그램에서의 같다는 == =두개 입니다.)

 

코드:

x = 10
y = 20

print(x)
print(y)

 

결과:

10
20

 

x라는 변수이름에 10이 저장된 메모리 주소를 바인딩 하였습니다.  print(x)로 값을 출력하면 저장된 메모리 주소가 아닌 메모리에 담긴 값을 출력합니다. 변수는 이름없는 데이터에 이름을 붙여 손쉽게 관리 할 수 있습니다.

 

그림으로 설명하면 아래와 같습니다. 10, 20은 컴퓨터의 메모리어딘가에 저장되어 있고 x,y는 그 값이 저장된 메모리의 주소를 카르킵니다.

 

 

 

 


값이 담긴 메모리 주소를 확인하고 싶을때는 id()함수를 사용합니다.

 

코드:

x = 10
y = 20

print(id(x))
print(id(y))

 

결과:

140725572549336
140725572549656

 

id로 변수를 확인해보면 변수의 값이 담긴 주소를 확인 할 수 있습니다. 주소를 실행할때마다 컴퓨터 마다 다르므로 내 컴퓨터에 지금 x,y이 값이 저장된 변수의 주소입니다.


파이썬의 변수는 저장할 데이터타입을 지정하지 않아도 됩니다. 데이터타입은 코드를 실행하는 시점에 런타임시에 파이썬이 데이터를 보고 자동으로 형식을 지정합니다. type() 함수를 이용하여 변수의 데이터타입을 확인할 수 있습니다.

 

코드:

integer_var = 42 

print(integer_var)
print(type(integer_var))

 

 

결과:

42
<class 'int'>

 

실행결과 숫자의 값이 잘 출력되었고 정수형 숫자데이터 타입인 int형이 출력되었습니다. int는 integer의 약자로 정수형  숫자형 데이터 타입 입니다. <class 'int'>로 나온 이유는 파이썬에서 모든 데이터는 class입니다. 이부분은 class를 다루면서 자세하게 설명하도록 하겠습니다.


정수, 부동 소수점, 문자열, 리스트, 딕셔너리 등 다양한 데이터를 형을 지정하지 않고 바인딩 할 수 있습니다.

 

코드:

integer_var = 42 
float_var = 3.14
string_var = "Hello, Python!"
list_var = [1, 2, 3, 4] 
dict_var = {"name": "Alice", "age": 30} 

print(integer_var, type(integer_var))
print(float_var, type(float_var))
print(string_var, type(string_var))
print(list_var, type(list_var))
print(dict_var, type(dict_var))

 

결과:

42 <class 'int'>
3.14 <class 'float'>
Hello, Python! <class 'str'>
[1, 2, 3, 4] <class 'list'>
{'name': 'Alice', 'age': 30} <class 'dict'>

 

정수형 숫자 int, 소수점 숫자 float, 문자열 str, 리스트형 list, 딕셔너리형 dict 데이터를 보고 파이썬이 데이터형식을  자동으로  할당하였습니다.

변수에 할당되는 값에 따라서 자동으로 데이터 타입을 결정하는 것을 [동적 타이핑] 이라고 명칭합니다. 움직일 "동" 을 사용하여 미리 데이터타입을 결정하는게 아닌 실행될때 데이터 타입을 보고 파이썬이 타입을 결정합니다.


변수이름을 만들때는 규칙이 있습니다. 아래는 올바른 변수의 이름입니다.

 

코드:

a = 3
a3 = 'hello'
my_var = 10
_my_var = 20

 

변수 이름은 문자, 숫자, 밑줄(_)만 사용할 수 있습니다.

변수의 이름은 숫자는 허용하지만 숫자로 시작할 수 없습니다.


아래는 변수를 만들때 틀린 변수 규칙입니다.

 

코드:

3a = 10 
my variable = 60 
a-3 = 20
a$ = 'hello'
if = 10

 

변수는 숫자로 시작할 수 없습니다. 3a 는 숫자로 시작하기때문에 틀렸습니다.

변수에는 공백이 들어갈 수 없습니다. my variable 은 공백이 포함되어 있기때문에 틀렸습니다.

변수에는 특수문자가 들어갈 수 없습니다. a-3은 - 특수문자로인해, a$은 $ 특수문자로 인해 틀렸습니다.

또한 파이썬의 키워드는 변수이름으로 사용할 수 없습니다. if = 10은 if는 조건문의 키워드로 변수로 사용할 수 없습니다.

아래는 파이썬의 키워드 목록 입니다. 키워드에 포함되어 있는 이름은 변수로 사용할 수 없습니다.

False      await      else       import     pass
None       break      except     in         raise
True       class      finally    is         return
and        continue   for        lambda     try
as         def        from       nonlocal   while
assert     del        global     not        with
async      elif       if         or         yield

 


또한 변수의 이름은 대소문자를 구분합니다. 아래 대소문자가 조금씩 다른 3개의 변수를 만들고 각각 값을 출력해봅니다.

 

코드:

myhome = 10
myHome = 20
MyHome = 30

print(myhome,myHome,MyHome)

 

결과:

10 20 30

 

myhome, myHome, MyHome 은 대소문자로 구문되었습니다. 3개의 변수는 모두 다른 변수 입니다.


변수의 이름을 만들때는 의미있는 이름을 사용하는것이 좋습니다. 나이를 저장하고 출력하는 코드를 만들어 보도록 하겠습니다.

 

코드:

x = 10
age = 10

print("나이는",x,"살입니다.")
print("나이는",age,"살입니다.")

 

결과:

나이는 10 살입니다.
나이는 10 살입니다.

 

코드를 보면 결과는 동일합니다. 다만 나이를 저장하는 변수는 x 이름을 사용하고 또 하나는 age를 사용합니다. print를 이용하여 나이를 출력하였습니다. 예제코드는 코드가 몇줄되지 않아 단순하여 x의 값도 나이값을 저장하는 변수이고 age도 나이 값을 저장하는 변수인것을 알수있습니다. 다만 코드가 길어지면 print만을 사용하였을때 x 의 이름으로 변수의 이름을 지정하였을때는 x값을 무엇을 담은 값인지 짐작하기 어렵습니다. 그렇기 때문에 변수의 이름은 어디에서 보더라도 무슨값을 바인딩하고 있는지 짐작이 가능한 이름으로 만드는것이 좋습니다.


변수의 이름을 만들때 하나의 단어로 이루어진 변수가 있는 반면 여러개의 단어의 조합으로 이루어진 변수이름이 있을 수 있습니다. 아래와 같이 유저의 이름을 저장하는 username 변수와 유저의 핸드폰번호를 저장하는 userphonenumber 변수가 있어 각각의 값을 저장하였습니다.

username = "jang moon chul"
userphonenumber = "010-1234-5678"

 

변수의 이름이 여러개의 단어의 조합으로 되어 있지만 단어와 단어 사이에 띄어쓰기를 할 수 없어서 변수의 가독성이 좋지 않습니다. 파이썬에서는 단어와 단어 사이를 _(언더바)로 분리하여 가독성을 좋게합니다.

user_name = "jang moon chul"
user_phone_number = "010-1234-5678"

 

_(언더바)로 단어와 단어사이를 분리하였습니다. 여러 단어를 이어 붙이면 뱀 처럼 생겼다라고 해서 뱀의 영어인 스네이크 케이스 라고 부릅니다. 아래의 뱀 처럼 생겼습니다. 

 

파이썬에서는 변수, 함수의 이름을 생성할때 스네이크 케이스를 사용하는 것을 가독성측면에서 추천합니다. 변수 또는 함수 이름을 만들때 스네이크 케이스 사용하지 않아도 문법적인 오류는 없지만 가독성적인 측면에서 사용하는 것을 추천합니다.

 

아직 함수부분은 배우지 않았지만 아래와 같이 함수의 이름을 만들때도 파이썬에서는 스네이크 케이스의 이름규칙을 사용합니다.

def say_hello():
    print("hello")

say_hello()

 

함수를 호출할때는 함수이름() 소괄호를 붙여 호출합니다. 파이썬의 함수역시 이름을 만들때는 _(언더바)를 붙여 스케이크 케이스의 이름규칙을 권장합니다.

 

스네이크 케이스 이외에 C/C++ 언어에서 변수와 함수를 생성할때 사용하는 규칙인 캐멀 케이스가 있습니다.

userName = "jang moon chul"
userPhoneNumber = "010-1234-5678"

 

캐멀케이스는 처음 시작하는 단어는 소문자로 시작하고 단어가 변경될때 시작되는 단어를 대문자로 합니다.

캐멀은 낙타로 변수이름이 낙타 등처럼 생겼다 라고해서 붙여진 이름입니다. 파이썬에서는 캐멀케이스의 규칙은 사용하지 않습니다.  파이썬에서 권장하지 않는 방식이지 사용한다고 해서 문법상의 오류는 발생하지 않습니다. 회사나 팀에서 캐멀케이스를 사용해서 코딩스타일을 유지한다고 정했다면 파이썬의 권장사항보다 회사나 팀의 규칙을 먼저로 적용하여 개발 해도 됩니다.

 

 

스네이크 케이스, 캐멀 케이스 이외에 파스칼 케이스가 있습니다. 파스칼 케이스는 캐멀케이스와 비슷하지만 첫 단어도 대문자로 시작합니다. 아래는 파스칼 케이스로 만든 클래스 입니다. 레시피북 클래스를 만들고 객체를 생성하는 간단한 예제입니다. 지금은 코드를 이해하기 보다는 파스칼케이스의 변수이름 규칙으로 클래스를 생성한다 라는 부분만 이해를 하면 됩니다. 클래스는 책의 뒷부분에서 자세하게 다룹니다.

class RecipeBook:
    pass

my_cook = RecipeBook()

 

파이칼 케이스는 스케이스 케이스인 뱀, 캐멀 케이스인 낙타와는 다르게 동물을 지칭하지는 않습니다. 파스칼 이라고 하는 프로그램 언어에서 주로 사용했던 이름 규칙이어서 파스칼 케이스로 명칭하였습니다. 파스칼 케이스는 클래스의 이름을 만들때 주로 사용합니다. 파이썬 뿐만 아니라 C++에서도 클래스의 이름을 생성할 때 파스칼 케이스를 사용합니다.

첫글자로 대문자로 시작하고 단어가 변경될때 변경된 단어의 첫글자를 대문자로 시작합니다.


지금까지는 변수의 이름 규칙에 대해 알아보았습니다. 변수는 변하는 값으로 변하지 않는 값인 상수도 있습니다. 파이썬에서 변하지 않는 상수의 이름을 만들때도 권장하는 규칙이 있습니다.  상수는 모두 대문자로 만들고 여러개의 단어가 있다면 _(언더바)를 붙여 스네이크 케이스로 만듭니다. 아래의 파이값과 빚의 속도를 저장하고 출력하는 코드를 작성합니다.

 

코드:

PI = 3.14159
SPEED_OF_LIGHT = 299792458 

print("Pi:", PI)
print("Speed of Light:", SPEED_OF_LIGHT)

 

결과:

Pi: 3.14159
Speed of Light: 299792458

 

파이썬에서 상수의 이름을 만들때 대문자로 만들어 값이 변하지 않는 상수 임을 알려줍니다. 단 파이썬에서는 문법으로 값을 변하지 못하게 할 수는 없습니다. PI 도 실제로는 변수로 다른값으로 변경해서 사용할 수 있습니다. 모두 대문자로 이루어진 변수는 상수라고 생각하고 코드에서 값을 임의로 변경하지 않도록 합니다.


변수, 상수, 함수, 클래스의 이름을 파이썬 코드를 작성할때 동일한 형식으로 만들면 이점이 많습니다.

 

코드:

PI = 3.14159
user_phone_number = "010-1234-5678"

class RecipeBook:
    pass

def say_hello():
    print("hello")

print("Pi:", PI)
print("phone:", user_phone_number)
my_cook = RecipeBook()
say_hello()

 

변수, 상수, 함수, 클래스등이 포함된 코드에서 선언하는 부분이 아닌 사용하는 부분에서 코드의 스타일만을 보고선 변수인지, 상수인지, 함수인지, 클래스인지 확인하기 쉽니다.

 

위의 코드에서 PI는 모두 대문자로 이루어져 있기때문에 상수입니다. 상수이기때문에 값을 내가 변경하면 안되겠구나 생각하고 코드를 작성합니다. user_phone_number 의 경우 스네이크 케이스로 되어 있기때문에 변수입니다. 또한 RecipeBook()은 첫글자가 대문자로 시작하는 파스칼케이스 이고 ()호출을 하는 소괄호가 있기때문에 클래스 입니다. say_hello()는 스케이크 케이스로 되어 있고 호출하는 ()소괄호가 있기때문에 함수 입니다.

 

지금은 코드가 짧아 확 와닿지 않을 수 있지만 코드가 길어지고 외부에서 만든 함수, 클래스 등을 사용할때 무엇을 불러와 사용하고 있는지 이름의 형식만을 보고 알 수 있습니다.


 


1. print함수를 사용해서 hello python 을 출력해보세요

정답:

더보기
print("hello python")

"(큰따옴표)를 이용하여 hello python 문자열을 감싸 출력하였습니다.


2. 1번 문제에서 사용한 방식이 아닌 다른방식으로 hello python 을 출력해보세요

정답:

더보기
print('hello python')

 '(작은따옴표)를 이용하여 hello python 문자열을 감싸 출력하였습니다.


3. Python is "awesome" 을 출력하세요 ""큰 따옴표도 같이 출력되어야 합니다.

정답:

더보기
print('Python is "awesome"')

큰따옴표를 출력하기 위해서는 문자열을 작은 따옴표로 감싸면 됩니다.


4. 문자열 "Python" 과 문자열 "Rocks!" 를 하나의 문자열로 이어 붙여 출력해보세요.

정답:

더보기
print("Python"+"Rocks!")

 문자열의 더하기를 이용하여 하나의 문자열로 이어붙일 수 있습니다.


5. 다음 코드를 실행하면 나오는 결과를 예측해보세요.

print("Python","Rocks!")

 

정답:

더보기

Python Rocks! 가 출력됩니다. Python 과 Rocks! 사이에 공백이 자동으로 추가됩니다.


6. 숫자 10과 5의 합을 print 함수를 이용하여 출력하세요.

정답:

더보기
print(10+5)

print함수에서 바로 연산된 결과값인 15가 출력됩니다.


7. 2개의 문자열 "Hello"와 "Python"이 있습니다. Hello-Python이 출력되도록 코드를 작성하세요
(힌트. sep= 인자를 사용합니다.)

정답:

더보기
print("Hello", "Python", sep="-")

 sep='-' 인자에 - 값을 넣어 콤마와 콤마사이에 값을 추가하였습니다.


8. 코드의 결과를 예측해보세요

print("Hello", "Python", sep="")

정답:

더보기

HelloPython 이 출력됩니다. sep인자에 공백도 넣지 않았기 때문에 콤마와 콤마사이에는 아무런 값도 입력되지 않습니다.


9. end 인자를 이용하여 다음 출력 결과를 만드세요.
Hello@Python@

 

정답:

더보기
print("Hello",end="@")
print("Python",end="@")

 end를 이용하여 종료인자를 @로 하여 출력하였습니다.


10. 코드의 결과를 예측하세요

print("Python", end=" ")
print("Rocks!")

 

정답:

더보기

Python Rocks!

첫번째 print의 종료값에 공백이 들어가 있기때문에 줄바꿈 대신 공백이 입력되었습니다.


11. 다음 코드의 출력 결과를 예측하세요.

name = "Python"
print("Welcome to", name)

 

정답:

더보기

Welcome to Python 이 출력됩니다.

, 콤마는 공백이 자동으로 입력되어 더해집니다.


12. 다음 코드를 실행했을 때 출력 결과는 무엇인가요?

# print("Hello, World!")
print("Python is awesome!")

 

정답:

더보기

Python is awesome! 만 출력됩니다. Hello, World!를 출력하는 코든는 주석처리 되었습니다.


13. 주석을 사용하여 다음 코드에서 print("Goodbye!")만 출력되도록 수정하세요.

print("Hello!")
print("Goodbye!")

 

정답:

더보기
#print("Hello!")
print("Goodbye!")

Hello!를 출력하는 코드는 #으로 주석처리 하였습니다.


14. 다음 코드를 실행했을 때 출력 결과는 무엇인가요?

print("Python") # This is a comment
# print("Java")
print("C++") # Another comment

 

정답:

더보기

출력:

Python
C++

 

Java는 #으로 주석처리되어 출력되지 않습니다.


15. 아래의 코드에서 모든 줄을 주석 처리하여 코드가 아무런 출력을 하지 않도록 하세요.

name = "Alice"
age = 30
print(name)
print(age)

 

정답:

더보기
# name = "Alice"
# age = 30
# print(name)
# print(age)

 #을 이용해서 한줄씩 주석처리 하였습니다. 

 

"""
name = "Alice"
age = 30
print(name)
print(age)
"""

 """(큰따옴표 3개)를 이용하여 여러줄을 문자열로 만들어 주석처리 하였습니다.

 

두가지 방법으로 주석처리를 하였습니다.

주석(Comment)은 코드 내에서 실행되지 않고, 코드의 가독성을 높이기 위해 작성되는 설명이나 메모입니다. 주석은 다른 개발자들이 코드의 목적, 동작 방식, 사용 방법 등을 쉽게 이해할 수 있도록 돕는 역할을 합니다. 또한, 자신이 작성한 코드라도 나중에 다시 볼 때 그 의미를 명확히 기억할 수 있도록 하는 데 유용합니다.

 


파이썬의 주석은 #을 이용합니다.

 

코드:

#샵은 주석입니다.
print("hello")

 

결과:

hello

 

#샵은 주석입니다. 는 주석으로 코드에는 영향을 받지 않아 아무런 동작을 하지 않았습니다. print함수만 동작하여 값을 출력하였습니다.


코드의 #이후부터 같은줄은 주석으로 처리됩니다.

 

코드:

#샵은 주석입니다.
#print("hello")

 

결과:

아무값도 출력하지 않습니다.

 

print함수또한 주석이 되어 아무값도 출력되지 않습니다.


코드와 같은 줄에 #을 입력하여 주석처리 가능합니다.

 

코드:

#샵은 주석입니다.
print("hello") #샵 이후부터 주석처리 됩니다

 

결과:

hello

 

#이후부터 주석처리 되어 hello는 이상없이 출력되었습니다. 보통 그줄의 코드의 내용을 설명하기 위해 사용합니다.


vscode 또는 편집기에서는 편집기 자체 에서 주석처리를 할 수 있는 기능을 제공합니다.

 

vscode에서는 주석을 하고싶은 부분을 드레그하여 선택 후 [컨트롤 + /]를 누르면 선택할 줄들이 주석처리 됩니다.

 

내가 선택한 부분이 주석처리 되었습니다.

 

편집기 마다 단축키가 조금씩 다르나 대부분의 편집기에서는 주석을 손쉽게 할 수 있는 기능을 제공합니다.


"""(큰따옴표 3개) 를 이용해 문자열로 만들어 여러줄을 주석처리 할 수 있습니다.

 

코드:

"""
name = 'jay'
age = 25
print(name,age)
"""

 

여러줄을 """(큰따옴표 3개) 를 이용해 문자열로 만들어 주석처리 하였습니다. 코드를 실행해도 주석코드로 에러가 발생하지 않습니다.


'''(작은따옴표 3개) 역시 문자열로 만들어 여러줄을 주석처리 할 수 있습니다.

 

코드:

'''
name = 'jay'
age = 25
print(name,age)
'''

 

'''(작은따옴표 3개) 역시 문자열로 만들어 여러줄을 주석처리 하였습니다.


 

+ Recent posts