[서초 AI 칼리지] - (2)

hi_rice·2025년 4월 18일

서초AI칼리지

목록 보기
2/4

두번째, M02 - 자료형 강의로 넘어가보자.

객체(object)

\rarr 객체란, 여러 속성과 행동을 가지고 있는 데이터다. 데이터를 추상화한 것이라고도 할 수 있다. 모든 객체는 identity와 값을 가지고 있고, 자료형에 해당한다. 자료형은 객체의 종류라고 할 수 있다.

identity는 객체들을 식별하기 위한 ID라고 생각하면 된다. 예를 들어 주민등록번호 같은.

자료형에 따라 객체가 가지는 속성과 행동이 달라진다.
숫자 데이터끼리는 나눗셈을 해 숫자를 나누고 결과값을 출력 받을 수 있지만, 텍스트 데이터를 나눌 수는 없다.

파이썬은 객체지향적인 언어인데, 이말은 모든 데이터를 객체로 표현한다는 뜻을 갖고 있다.
데이터 뿐만이 아니라, M01에서 배웠던 print() 함수나 input() 함수도 함수 자료형의 객체들이라고 할 수 있다.

자료형 - 문자열(String)

문자열 자료형은 텍스트 데이터를 표현하기 위해 사용한다.

문자열 타입은 작은 따옴표나 큰 따옴표로 표현된다.

예를 들어, "Hello world"라는 문자열이 있다고 하자.
"Hello world"는 문자열 객체이고, 값은 Hello world이다.
큰 따옴표, 작은 따옴표 둘 다 같지만, 시작과 끝이 같아야한다.
큰 따옴표로 시작했으면 큰 따옴표로 끝나야 한다.

문자열 안에 들어갈 수 있는 특수문자가 여러가지 있다.

  • \n : 줄바꿈
  • \t : 탭
  • \ : 백슬래시
  • \' : 작은 따옴표
  • \" : 큰 따옴표

자료형 - 숫자

숫자에는 여러 타입이 있다.

  • integer : 정수형
  • float : 실수형

출력할 때 소수점이 있으면 float, 없으면 integer다.
/ 연산자는 무조건 실수형을 반환한다.
다른 연산자는 피연산자가 모두 정수형이면 정수형을 반환하고, 피연산자가 하나라도 실수형이면 실수형을 반환한다.

자료형 - Boolean

Boolean은 참, 거짓을 표현하는 자료형이다.

  • True : 참
  • False : 거짓

자료형 - NoneType

NoneType은 값이 없다는 것을 의미하는 자료형이다.
NoneType 자료형의 객체들은 모두 None 값을 가지고 있다.
함수가 반환하는 값이 없을 때 파이썬이 반환값을 None으로 설정해준다.

print(print("Hello world"))

print함수가 print함수를 감싸고 있는 코드이다.
출력값을 확인해보면

Hello world
None

이런 결과값을 볼 수 있다.
print 함수가 아무것도 반환을 하지 않는 함수이기 때문에 None을 반환한다.

type() - 자료형 확인

type() 함수는 인수가 어느 자료형인지를 반환하는 함수이다.
input() 함수는 항상 문자열을 반환한다.

자료형 - 문자열 연산자(string operators)

  • x in str ( x는 str 안에 있다 )

in 연산자는 x, str 이 두개의 피연산자를 받는다.
x 문자열이 str 문자열 안에 있는지 Boolean을 반환한다.
안에 있다면 True, 안에 없다면 False를 반환한다.

  • x not in str ( x는 str 안에 없다 )

x 문자열이 str 문자열 안에 없는지 Boolean을 반환한다.
안에 없다면 False, 안에 있다면 True를 반환한다.

  • str1 + str2

두 문자열을 합쳐 만든 하나의 문자열을 반환한다.

  • str number / number str

str 문자열이 number번 합쳐 만든 하나의 문자열을 반환한다.

  • len(s)

문자열의 길이를 정수형으로 반환한다.

  • 형변환(type casting)

인수의 타입을 바꿔서 다른 자료형의 객체를 반환하는 함수
str(x) : 인수를 문자열로 바꿔주는 함수

자료형 - 문자열 메소드(string methods)

메소드는 각 개체 타입을 위해 기본적으로 제공되는 함수를 말한다.
메소드는 (객체 + . + 함수)의 형태로 부른다.

  • str.count(str2)
    str1에 str2가 몇번 나오는지 integer 객체를 반환한다.

  • str.islower()
    문자열에 있는 모든 영문자가 소문자인지 Boolean을 반환한다.

  • str.lower()
    모든 영문자가 소문자로 바뀐 문자열을 반환한다.

  • str.isupper()
    문자열에 있는 모든 영문자가 대문자인지 Boolean을 반환한다.

  • str.upper()
    모든 영문자가 대문자로 바뀐 문자열을 반환한다.

  • str1.endswith(str2) \rarr str1이 str2로 끝난다.
    str1이 str2로 끝나는지 Boolean을 반환한다.

  • str1.startswith(str2) \rarr str1이 str2로 시작한다.
    str1이 str2로 시작하는지 Boolean을 반환한다.

  • str1.replace(str2, str3)
    str1 안에 있는 모든 str2를 str3으로 대체한 문자열을 반환한다.

  • str.strip()
    문자열 맨 왼쪽과 맨 오른쪽에 연속으로 나오는 공백을 없앤 문자열을 반환한다.

자료형 - 숫자 연산자 및 메소드(numeric operators and methods)

  • abs(x)

abs는 absolute(절대)의 약자.
x의 절대값을 반환한다.
이 말은,
x가 음수일 때, -x를 반환을 하고
x가 양수일 때, x를 반환한다.
\rarr 이런식으로 반환을 할 때 항상 양수를 반환한다.

  • pow(x, y)

pow는 power의 약자.
거듭제곱을 말할 때,
' x to the power of y ' - x의 y거듭제곱
이렇게 말한다.
x의 y제곱을 반환한다.(**연산자와 같다.)

  • max(x1, x2, ...)

maximum
받은 숫자들의 최대값을 반환한다.

  • min(x1, x2, ...)

minimum
받은 숫자들의 최소값을 반환한다.

  • flt.is_integer()

flt : float 메소드.
is_integer : 정수다.
flt 실수형 객체가 정수의 값을 가지고 있는지 Boolean을 반환한다.

  • 형변환(type cating)
    - int(x) : x를 정수형으로 바꿔준다.
    - float(x) : x를 실수형으로 바꿔준다.

자료형 - Boolean 연산자(Boolean Operators)

  • bool1 or bool2

bool1의 진리값이 True면 bool2를 확인하지 않고 bool1을 반환한다.
bool1의 진리값이 False면 bool2가 반환된다.

or 연산자가 피연산자 하나라도 True이면 True를 반환하기 때문에 bool1이 True라면 True를 반환할 것이기 때문에 bool2를 굳이 확인할 필요도 없게 된다.

진리표(Truth Table)를 보자.

bool1bool2bool1 or bool2bool1 and bool2
TrueTrueTrueTrue
TrueFalseTrueFalse
FalseTrueTrueFalse
FalseFalseFalseFalse

나중에 배우겠지만, Boolean 연산자가 아니더라도 진리표가 있다.
그래서, bool1과 bool2가 Boolean 객체일 필요가 없다.

or 연산자가 피연산자 하나라도 True이면 True를 반환하기 때문에 bool1이 True라면 True를 반환할 것이기 때문에 bool2를 굳이 확인할 필요도 없게 된다.

  • bool1 and bool2

bool1의 진리값이 False면 bool2를 확인하지 않고 bool1을 반환한다.
bool1의 진리값이 True면 bool2가 반환된다.

  • not bool

bool이 False면 True, bool이 True면 False를 반환한다.

  • 우선 순위 : not, and, or

  • 피연산자가 Boolean이 아니더라도 진리값을 가진다.

0인 int나 float는 False, 0이 아니면 True
문자열의 길이가 0이면 False, 아니면 True
None은 False

  • bool() (형변환)

자료형 - 비교 연산자

  • <, <=, >, >=, ==, !=

Boolean을 반환한다.
Boolean 연산자보다 우선순위가 높다.
문자열도 비교할 수 있는데, 예를 들어 'a'<'b'라고 한다면, 알파벳 순으로 먼저 나오는 게 더 작은게 된다. \rarr True를 반환한다.

변수

객체에 이름(식별자 - identifier)을 줄 수 있다.
이 과정을 대입문(assignment)이라고 부른다.

  • 문자, 숫자, _ 사용 가능
  • 대소문자 구분
  • 이름의 첫 글자로 숫자 사용 불가
  • _ 외에 특수문자 사용 불가
  • 예약어(keyword) 사용불가(True, False, None, and, not, or, is,...)

이름이 가르키는 객체가 바뀔 수 있어, 이름이 있는 객체를 변수라고도 부른다.

  • 증분 대입문(augmented assignment)

자주 쓰이는 연산자와 대입문을 축소한 연산자

\rarr a += b => a = a + b
\rarr a -= b => a = a - b
\rarr a *= b => a = a * b
\rarr a /= b => a = a / b

문자열 형식화 (string formatting)

f-string : 문자열 안에 중괄호를 넣어 코드의 반환값을 출력할 수 있다.
{출력할 값:출력이 차지할 공간 수}로 출력을 더 균일하게 할 수 있다.
< , > , ^ 로 텍스트 정렬도 할 수 있다.
float의 경우 몇자리까지 표현이 되는지도 조절할 수 있다.

중괄호 안에 중첩된(nested) 중괄호로 문자열이 차지하는 공간 수나 소수점 자리를 변수의 값으로 설정할 수 있다.

width = 10
precision = 3
print(f"{my_number:{width}.{precision}f}")

width는 공백을 포함해서 자릿수가 10, precision은 소수점 3자리까지만.

강의와 함께 나온 문제도 풀어보자.

문제 | input() 함수로 정수 n을 받은 다음에 별표가 n개 있는 문자열을 출력하세요.
예시 입력
5

예시 출력
*****

n = int(input("How many asterisks? "))

print("*"*n)

input 함수는 "How many asterisks?" 라고 질문을 출력한다.
사용자가 숫자 5를 입력하면, 변수 n에는 정수 5가 저장된다.
그 후 print("*" n) 을 실행하면, 가 5번 반복되어 ***** 가 출력된다.

다음 문제로 넘어가보자.

문제 | 다음과 같은 결과가 나오게끔 input() 함수로 숫자 두 개를 받은 후 f-string으로 합을 반환하는 코드를 작성하세요.
입출력 (볼드체: 프롬프트 및 출력)
What is your first number? 100
What is your second number? 23.34
The sum of your numbers is 123.34!

힌트
- 출력문에서 오타가 없는지 잘 확인하세요.
- input()으로 받은 값은 문자열이므로 숫자로 취급하기 위해서는 어떠한 조치를 취해야 할까요?
- 출력에 있어서 소수점의 제한은 따로 없습니다.
first = float(input("What is your first number? "))
second = float(input("What is your second number? "))
print(f"The sum of your numbers is {first + second}!")

input 함수로 질문을 두 번 출력해야 하기 때문에,
first와 second 변수로 나눠서 입력을 받는다.

첫 번째로는 100을 입력하고, 두 번째로는 23.34를 입력해 더해야 하기때문에 둘 다 float()으로 감싸서 숫자로 변환해준다.

100은 정수이기 때문에 int()를 사용해도 되지만,
코드의 일관성을 고려해 두 값 모두 float()으로 변환한다.

마지막으로, print 함수에서 f-string을 이용해
first와 second를 더한 값을 출력해준다.

M02는 여기까지. 🤟🤟

0개의 댓글