PYTHON Day 2

MMM._.MMM·2025년 4월 20일

Day2

오늘은 데이터타입, int, str, 연산, 타입변환, f-String에 대해 공부합니다.
오늘 공부의 마지막에는 팁 계산기를 만들예정입니다.

시작하기 전에 Day1에서 len에 대해 공부를 했었는데요 len에 문자열만 넣어서 진행을 했었는데 만약 숫자형을 넣으면 어떻게 될까요?

사진 처럼 TypeError가 발생합니다.
이 error의 원인을 알기 위해서는 데이터 타입에 대해서 알아야합니다.
일단 TypeError가 발생한 원인에 대해 말하고 데이터 타입에 대해서 공부 진행하겠습니다.
len() 함수를 사용할 수 있는 객체는 문자형, 리스트, 튜플등에만 사용이 가능하기에 int에 len함수 사용시에 위와 같이 TypeError가 발생하는 것입니다.
그러면 int에 len함수를 사용할려면 어떻게 해야할까?
방법은 int형 데이터 타입을 str(문자형)으로 형 변환 후 len함수를 사용하면 TypeError는 해결이 됩니다.

str추가해서 형변환 진행
len(str(123))

숫자형을 문자형으로 출력
len("123")

1. 데이터 타입

  1. 문자형(str, String)
    문자형은 캐릭터를 합친 단어라고 생각하면 됩니다.
    만약 Hello라는 5가지 캐릭터를 합쳐서 만든 단어에서 각각의 캐릭터를 끌어낼 수 있습니다.
    []-대괄호-를 사용하고 원하는 캐릭터의 인덱스를 넣으면 해당 문자 즉 캐릭터가 출력이 됩니다.
예시)
print("Hello"[0])

출력: H

//순서는 0부터 시작한다.

여기서 -0을 인덱싱을 하면 왜? H가 출력되는거지 하는 사람도 있을 겁니다.
python에서는 0과 -0은 같은 값으로 취급하기 때문에 H가 출력이 되는 겁니다.
결론은 "Hello"[-0]는 실제로 "Hello"[0]와 동일하고, 문자열 "Hello"의 첫 번째 문자인 'H'를 가리킵니다.

  • ""안에 숫자를 넣으면 더 이상 숫자가 아닙니다.
    그 이유는 ""안에 숫자를 넣으면 프로그램은 문자형으로 인식하기 때문입니다.
예시)
print("123" + "456")	//연산

출력 결과
123456
// ""안에 있는 숫자는 문자형으로 인식이 되기에 숫자형과 같은 출력을 생각하면 안됨
// 문자형끼리의 연산이기에 123456이 출력이 됨
  1. 정수형(int, Integer)
    정수형은 0.000과 같은 소수점의 수가 아닌 수를 의미합니다.
    우리가 가격의 금액을 입력하때에 중간중간에 ,를 많이들 넣습니다.
    코드에도 적용이 가능한데 , 대신에 를 사용하면 사람이 보기에는 시각회되어서 확실히 보기 쉽습니다. 컴퓨터는 를 지우고 인식을 하기에 _를 사용해도 상관은 없습니다.
예시)
print(123,456)	<- x
print(123_456)	<- o

출력 결과
123 456
123456

출력 결과처럼 1번째는 2개의 정수형을 출력하고 2번째는 1개의 정수형을 출력하는 것을 확인할 수 있습니다.
  1. 실수형(float, floating Point Number)
    실수형은 정수형과 반대로 소수점의 숫자를 말합니다.

  2. 불리언 (Boolean)
    불리언 간단합니다. 참과 거짓을 의미합니다.

    예시
    a = 1
    print(bool(a < 2)) // True
    print(bool(a < 0)) // False
    //bool혹은 boolean이라 입력해도됨

예시와 같이 참 과 거짓을 나타 낼때에 불리언을 사용합니다.

데이터 타입 확인하는 방법[type]

2. 형 변환

형 변환은 말 그대로 데이터 타입의 변환을 말합니다.

추가로 문자형으로된 숫자는 int로 형 변환이 가능하지만 ABC와 같은 문자를 int로 형 변환을 하면 어떻게 될까요?

사진처럼 ValueError가 발생합니다.
int로 형 변환을 할려면 반드시 숫자인 형태이여야하기에 발생하는 error입니다.
그러면 숫자와 문자가 섞여있는 형태이라면 어떻게 될까요?

똑같이 ValueError가 발생합니다.
이런 경우에는 따로 숫자만 추출하는 방법이 있습니다.

다음 방법은 문자 -> 숫자로 변환이 가능합니다.

ord()사용	// 유니코드 값(아스키 코드)으로 변경

print(ord("A"))  # 출력: 65

TypeError 대응 해보기

# print("Number of letters in your name: " + len(input("Enter your name")))

이 코드 그대로 사용시 TypeError가 발생합니다.
정상적으로 코드가 실행 되도록 수정해주세요

강의 영상의 정답코드

name_of_the_user = input("Enter your name")
lenght_of_name = len(name_of_the_user)

print(type("Nuber of letters in your name: ")	#str
print(type(lenght_of_name))	#int

print("Number of letters in your name: " + str (lenght_of_name))


두 코드의 출력은 같으나 영상속 코드의 경우 입력받은 데이터의 타입을 확인하고 출력하는 차이를 가지고 있습니다.

3. 수학연산


표를 보면 나눗셈과 정수 나눗셈으로 나뉘어 있는 것을 확인할 수 있습니다.
그 이유는 정확성과 편의성 그리고 다양한 상황에서 유연한 상황을 위해서입니다.
/를 사용하면 출력물은 항상 .(point)를 사용한 실수를 출력하고 //는 결과를 내림하여 정수로 반환합니다.

정확한 실수의 계산이 필요한 경우

  • 예를 들어 통계를 계산하거나 평균을 구할때
  • /는 항상 소수점을 이용해서 정확한 계산을 보여줍니다

정수 계산만 필요한 경우

  • 예를 들어 인덱싱 계산, 반복 횟수, 배열 슬라이싱등
  • //는 소수점 없이 버림(floor) 처리
예시)
a = 7
b = 3

print(a / b)   # 3.5 (실수 나눗셈)
print(a // b)  # 3   (정수 나눗셈)

print(-7 / 2)    # -3.5
print(-7 // 2)   # -4  (내림되어 -4가 됨)

우리가 학교다닐때 수학시간에 배운것 처럼 연산을 할때에 우선순위(PEMDAS)가 있었는데
Python에서 연산을 할때에도 우선순위는 똑같이 적용됩니다.

3 * 3 + 3 / 3 - 3 //결과 = 7.0

3 * 3 + 3 // 3 - 3 //결과 = 7

challenge

위 예시의 결과물을 7이 아닌 3으로 출력할 수 있게 바꾸세요(숫자 변경없이)

간단하게 ()를 사용하면 됩니다.
우선순위(PEMDAS)를 생각하면 괄호 다음으로 나눗셈, 곱셈을 하느데요 이걸 이용하면 쉽게 가능합니다.

print(3 * (3 + 3) / 3 - 3)	//결과 = 3

코딩 연습

bmi계산 하는 문제입니다.

BMI 계산 공식은 BMI = 체중(kg) / 신장(m)²으로 진행하면 끝입니다.

4. 연산 및 F-String(문자열 포맷팅)

  • round를 사용한 연산
    round() 함수는 숫자를 가장 가까운 정수나 지정한 소수점 자리수까지 반올림하는 데 사용됩니다.

소수점 자리 지정해서 출력도 가능합니다.
round(bmi, 자릿수)이런 형식으로 어떤 값에 몇 자릿수까지 출력을 할지에 대해 입력을 해주면 됩니다.

F-String

f-string은 문자열안에 변수를 간편하게 삽입할 수 있는 유용한 기능입니다.
이전의 print로 문자열 출력하는 것과 같지만 조금더? 코드 작성할 때 편합니다.
간단하게 예시를 보면 이해가 될겁니다.

이전 print방식
name = "Alice"
age = 25
print("안녕하세요. 제 이름은" + name + "이고 나이는" + age + "살이에요."

출력: 안녕하세요, 제 이름은 Alice이고 나이는 25살이에요.
---------------------------------------------------------
f-string 사용 예시
name = "Alice"
age = 25

print(f"안녕하세요. 제 이름은 {name}이고 나이는 {age}살이에요.")

출력: 안녕하세요, 제 이름은 Alice이고 나이는 25살이에요.

위 예시를 보면 코드작성할 때 좀더 간결하면서 가독성도 좋아진게 보이시나요?
그저 문자열만 출력하는 것말고도 연산, 포맷팅도 가능합니다.

//연산
a = 5
b = 3
print(f"{a} + {b} = {a + b}")

출력: 5 + 3 = 8

//포맷팅
pi = 3.141592
print(f"원주율은 {pi:.2f}입니다.")

출력: 원주율은 3.14입니다.

Day2 Project
-팁 계산기-

강의 영상속 답안

profile
아....평화롭게 오카네모찌 되고JOB다...

0개의 댓글