1.문자열의 길이 확인
len() 함수는 문자열의 문자 수를 반환한다.
예: len("hello")의 결과는 5 (5개의 문자로 구성).
숫자의 자릿수 확인 시 주의사항
숫자 자체(예: 1234)를 len()에 넣으면 오류 발생 (TypeError).
이유: len() 함수는 문자열(str)에만 적용 가능하고, 숫자(int)에는 적용할 수 없음.
데이터 타입의 이해
파이썬의 기본 데이터 타입:
문자열(String): 문자들의 집합. 항상 **따옴표(" ")**로 감싸야 함.
예: "hello"
문자열은 인덱싱으로 개별 문자 추출 가능 ("hello"[0] → "h")
인덱스는 0부터 시작
음수 인덱스도 사용 가능: -1은 마지막 문자를 의미
정수(Integer): 소수점이 없는 정수. 따옴표 없이 숫자만 입력.
예: 123, -50
문자열처럼 생긴 숫자("123")는 실제 숫자가 아니며 덧셈 시 문자열 연결(결합)됨
예: "123" + "345" → "123345"
반면, 숫자끼리 덧셈: 123 + 345 → 468
큰 수를 표현할 때는 밑줄(_)로 구분 가능: 1_000_000 → 1000000
부동소수점(Float): 소수점을 포함하는 숫자.
예: 3.14, -0.5
이름 의미: 소수점 위치가 "떠다닌다(floating point)"는 뜻
불리언(Boolean): 참/거짓을 나타냄. 값은 True 또는 False (첫 글자 대문자, 따옴표 없음)
조건 판단이나 흐름 제어 시 많이 사용
문자열 인덱싱 예제
text = "hello"
text[0] → 'h'
text[4] → 'o'
text[-1] → 'o' (뒤에서 첫 번째 문자)
문자열 vs 정수 비교 예시
print("123" + "345") # 출력: 123345 print(123 + 345) # 출력: 468
2.형식오류와 형식 확인, 그리고 형변환
1. 함수와 자료형 개요
함수는 공장에서 돌아가는 기계처럼, 입력값을 받아 처리한 후 출력값을 반환함
예시: 감자(입력)를 넣으면 감자튀김(출력)으로 나오는 기계
2. 타입 에러 (TypeError)
예: len() 함수에 문자열이 아닌 숫자를 넣으면 에러 발생
len() 함수는 "크기(Size)를 가진 자료형"만 받을 수 있음 (예: 문자열, 리스트 등)
숫자(int)는 크기가 없기 때문에 TypeError 발생
PyCharm에서는 마우스를 올리면 어떤 타입을 기대하는지 알려줌
3. 공식 문서 vs 기타 자료
공식 문서: 간결하지만 설명이 짧음
W3Schools, StackOverflow 등과 병행 사용 추천
4. len() 함수가 받을 수 있는 자료형
문자열(str)
바이트(byte)
튜플(tuple)
리스트(list)
range
딕셔너리(dict)
세트(set), frozen set
숫자형(int, float 등)은 해당 없음
5. 실습: TypeError 수정하기
len("hello") # 문자열로 바꿔서 TypeError 해결
6. 자료형 확인하기 - type() 함수
어떤 자료형인지 확인 가능
print(type("hello")) # <class 'str'> print(type(10)) # <class 'int'> print(type(3.14)) # <class 'float'> print(type(True)) # <class 'bool'>
이 과정을 "타입 확인(type checking)"이라고 함
7. 실습: 네 가지 자료형 출력
print(type("문자열")) # 문자열 print(type(100)) # 정수 print(type(3.14)) # 실수 print(type(False)) # 불리언
8. 타입 변환 (Type Conversion / Type Casting)
int(), float(), str(), bool() 등 함수 사용
int("123") # 문자열을 정수로 변환 float("3.14") # 문자열을 실수로 변환 str(100) # 숫자를 문자열로 변환 bool(1) # 숫자를 불리언으로 변환
예제:
print("123" + "456") # 문자열 연결 => 123456 print(int("123") + int("456")) # 숫자 덧셈 => 579
주의: 변환 불가능한 경우 에러 발생
int("abc") # ValueError 발생
9. 실습: 사용자 입력 길이 출력
name = input("Enter your name: ") length_of_name = len(name) print("Number of letters in your name: " + str(length_of_name))
input() 함수는 항상 문자열 반환
len() 결과는 정수이므로 str()로 문자열 변환 후 연결 필요
문자열 + 숫자는 불가능 => 타입 에러 발생
10. 요약
함수는 특정한 자료형을 기대함
type() 함수로 자료형을 확인할 수 있음
자료형이 맞지 않으면 TypeError 발생
str(), int() 등의 함수로 자료형을 변환할 수 있음
사용자 입력 등에서 변환은 자주 사용됨
공식 문서도 참고하되, 이해가 어려우면 추가 자료 활용
3.파이썬 수학 연산 정리
1. 기본 연산자
덧셈(+): 숫자 간 더하기 또는 문자열 결합에 사용됩니다.
2 + 3 # 결과: 5 "Hello" + "World" # 결과: HelloWorld
뺄셈(-): 숫자 간 빼기를 수행합니다.
7 - 3 # 결과: 4
곱셈(*): 곱하기 연산입니다. x가 아닌 * 기호를 사용합니다.
3 * 2 # 결과: 6
나눗셈(/): 나누기를 수행하며 항상 실수(float) 결과를 반환합니다.
6 / 3 # 결과: 2.0 type(6 / 3) # 결과: float
정수 나눗셈(//): 소수점 이하를 버리고 정수(int) 를 반환합니다.
5 // 3 # 결과: 1 type(5 // 3) # 결과: int
주의: 단순히 소수점 이하를 버리는 방식이므로 과학적 계산에서 위험할 수 있음
거듭제곱(**): 제곱 연산을 수행합니다.
2 ** 3 # 결과: 8 (2 * 2 * 2)
2. 연산자 우선순위 (PEMDAS)
연산자가 한 줄에 여러 개 있을 경우, 우선순위에 따라 실행 순서가 결정됩니다.
PEMDAS: 괄호 > 지수 > 곱/나눗셈 > 덧셈/뺄셈
우선순위설명기호
1괄호 (Parentheses)()
2지수 (Exponent)**
3곱, 나눗셈*, /, //
4덧셈, 뺄셈+, -
곱셈과 나눗셈은 같은 우선순위를 가지며, 왼쪽에서 오른쪽(LR) 으로 계산됩니다.
3. 예제 분석
다음 코드를 분석해 봅시다:
3 * 3 + 3 / 3 - 3
계산 순서:
3 * 3 → 9
3 / 3 → 1.0
9 + 1.0 → 10.0
10.0 - 3 → 7.0
최종 결과: 7.0
4. 괄호를 사용한 우선순위 변경
다음 코드를 수정하여 결과를 3으로 만들고 싶다면?
3 * (3 + 3) / 3 - 3
계산 순서:
괄호: 3 + 3 → 6
곱셈: 3 * 6 → 18
나눗셈: 18 / 3 → 6.0
뺄셈: 6.0 - 3 → 3.0
괄호 사용으로 계산 순서를 조정하여 원하는 결과 도출 가능
5. 마무리
파이썬은 명확한 우선순위를 가지고 수학 연산을 처리합니다.
괄호는 매우 강력한 도구이며, 계산 순서를 제어할 수 있습니다.
//와 같은 정수 나눗셈은 특정 상황에서 유용하지만, 정보 손실이 있을 수 있으니 주의하세요.
수학적 계산을 시각적으로 확인하고 싶다면, Thonny의 디버깅 기능을 활용해 단계별로 확인할 수 있습니다.
4.파이썬 숫자 처리 및 출력 정리
1. 소수점 숫자 출력 문제
BMI 계산 결과와 같은 소수점이 많은 숫자를 그대로 출력하는 것은 사용자에게 적절하지 않음.
이를 해결하기 위해 숫자를 적절하게 반올림(round) 하거나 정수로 변환(int) 하는 방식이 필요함.
2. 정수 변환 vs 반올림
int(BMI) : 소수점을 잘라내고, 내림(flooring) 처리. 예: 30.99 → 30
round(BMI) : 수학적 반올림 처리. 예: 30.5 → 31, 30.4 → 30
3. 소수점 자리수 지정 반올림
round(숫자, 자리수) 형태로 사용.
예: round(BMI, 2) → 소수점 둘째 자리까지 반올림.
활용 예: 화폐 단위 계산, 정확한 소수점 표시 등.
BMI = 30.4567 print(round(BMI, 2)) # 출력: 30.46
4. 할당 연산자 (Assignment Operators)
기존 변수값을 기반으로 값을 갱신할 때 사용하는 축약 연산자.
+= : 덧셈 후 할당
-= : 뺄셈 후 할당
*= : 곱셈 후 할당
/= : 나눗셈 후 할당
예시:
score = 0 score += 1 # score는 이제 1 score -= 1 # score는 다시 0
5. f-문자열 (f-string)
문자열 안에 다양한 데이터 타입(정수, 실수, 불리언 등)을 손쉽게 삽입하는 방법.
기존 방식 문제점
score = 0 print("Your score is " + str(score)) # 문자열 + 정수 → 문자열 변환 필요
f-string 사용
score = 0 height = 1.8 is_winning = True print(f"Your score is {score}, your height is {height}, you are winning is {is_winning}") # 출력: Your score is 0, your height is 1.8, you are winning is True
문자열 앞에 f 추가
중괄호 {} 안에 변수 이름을 넣으면 자동으로 값이 문자열로 변환되어 삽입됨
요약
int()는 소수점을 제거하는 내림 처리
round()는 반올림 처리, 자리수 지정 가능
+=, -=, *=, /= 등으로 변수값 갱신 가능
f"문자열 {변수}" 형식으로 간편하게 다양한 값을 문자열에 삽입 가능
이 모든 기능들은 파이썬에서 숫자와 데이터를 효과적으로 다룰 수 있게 해줍니다.
5.팁 계산기
프로젝트 개요
이번 프로젝트에서는 팁 계산기를 만들어봅니다. 사용자가 총 금액, 팁 비율, 인원 수를 입력하면,
각 사람이 지불해야 할 금액을 소수점 두 자리까지 계산해서 출력해주는 프로그램을 작성합니다.
출력 예시
팁 계산기에 오신 것을 환영합니다. 총 금액은 얼마였나요? (예: 57000): 57000 팁은 몇 퍼센트로 주시겠어요? (예: 10, 12, 15): 10 몇 명이 나눠서 계산하나요? 7 1인당 지불 금액: 9000.00원
주요 개념 정리
1. 퍼센트 계산 방법
팁 비율을 계산할 때는 % 대신 숫자만 입력받아야 함
예: 12%는 12 / 100 = 0.12
총금액이 15000원일 때 12% 팁: 15000 * 0.12 = 1800
최종 금액: 15000 + 1800 = 16800
단축 방식: 15000 * 1.12
2. 소수점 처리
파이썬은 부동소수점 계산에서 약간의 오차가 생길 수 있음
두 자리로 반올림하려면 round(값, 2) 사용
예: round(3360.0, 2) → 3360.00
프로그램 설계 단계
1단계: 환영 메시지 출력
print("팁 계산기에 오신 것을 환영합니다.")
2단계: 사용자 입력 받기
bill = float(input("총 금액은 얼마였나요? (예: 57000): ")) tip = int(input("팁은 몇 퍼센트로 주시겠어요? (예: 10, 12, 15): ")) people = int(input("몇 명이 나눠서 계산하나요? "))
3단계: 팁 계산 및 총액 계산
tip_as_percent = tip / 100 total_tip = bill * tip_as_percent total_bill = bill + total_tip
4단계: 인당 계산
bill_per_person = total_bill / people final_amount = round(bill_per_person, 2)
5단계: 결과 출력 (f-string 사용)
print(f"1인당 지불 금액: {final_amount:.2f}원")
학습 포인트
데이터 타입 변환: input()은 문자열을 반환하므로 float()나 int()로 변환 필요
f-string: 문자열 내에 변수 포함하여 출력할 수 있음 (`f"문자열 {변수}")
연산 순서(PEMDAS): 괄호 → 지수 → 곱셈/나눗셈 → 덧셈/뺄셈
댓글 ( 0)
댓글 남기기