[혼공파] 2주차 - Chapter 02(02-3) - 3

Hee·2025년 1월 13일
0
post-thumbnail

2주차 진도 : Chapter 02(02-3) - 3
숙제 : 187p 3번 풀고 본인이 태어난 해와 띠를 출력하는 결과값 화면 인증
기간 : 1/3 - 1/19


숙제

str_input = input("태어난 해를 입력하세요 : ")

birth_year = int(str_input)

if birth_year % 12 == 0:
    print("원숭이 띠입니다")

elif birth_year % 12 == 1:
    print("닭 띠입니다")

elif birth_year % 12 == 2:
    print("개 띠입니다")

elif birth_year % 12 == 3:
    print("돼지 띠입니다")

elif birth_year % 12 == 4:
    print("쥐 띠입니다")

elif birth_year % 12 == 5:
    print("소 띠입니다")

elif birth_year % 12 == 6:
    print("범 띠입니다")

elif birth_year % 12 == 7:
    print("토끼 띠입니다")

elif birth_year % 12 == 8:
    print("용 띠입니다")

elif birth_year % 12 == 9:
    print("뱀 띠입니다")

elif birth_year % 12 == 10:
    print("말 띠입니다")

elif birth_year % 12 == 11:
    print("양 띠입니다")


1. 변수와 입력

1.1. 변수

정의

  • 값을 저장할 때 사용하는 식별자
  • 변할 수 있는 자료

변수 활용 방법

  1. 선언
  2. 값 할당
  3. 참조
  • 참조 : 변수에서 값을 꺼내는 것을 의미

1.2. 파이썬에서의 변수

  • 변수 자체의 이름을 적어주는 순간 선언된다

    • c언어처럼 일일이 자료형을 붙여 선언해 줄 필요가 없다
  • 참조하고 싶다면 참조할 위치에서 변수의 이름을 적어주면 된다


2. 복합 대입 연산자

2.1. 정의

  • 기존의 연산자와 조합해서 사용할 수 있는 연산자

2.2. 종류

연산자설명예시결과
+=덧셈 후 대입a += ba = a + b
-=뺄셈 후 대입a -= ba = a - b
*=곱셈 후 대입a *= ba = a * b
/=나눗셈 후 대입a /= ba = a / b
//=몫 나눗셈 후 대입a //= ba = a // b
%=나머지 연산 후 대입a %= ba = a % b
**=거듭제곱 후 대입a **= ba = a ** b
&=비트 AND 후 대입a &= ba = a & b
`=`비트 OR 후 대입`a
^=비트 XOR 후 대입a ^= ba = a ^ b
>>=비트 오른쪽 시프트 후 대입a >>= ba = a >> b
<<=비트 왼쪽 시프트 후 대입a <<= ba = a << b

3. input()

3.1. 정의

  • 사용자로부터 데이터를 입력 받을때 사용하는 함수
  • input() 함수의 () 안은 '프롬프트 문자열' 이라고 한다

3.2. 특징

age = input("Enter your age: ")
print(type(age)) 

출력 : <class 'str'>

  • input() 함수는 사용자 입력을 항상 문자열(string)으로 반환한다

3.3. input() 과 cast(캐스트)

정의

  • cast : 데이터 타입을 명시적으로 변환하는 작업

종류

  • int() : "문자열"을 int형으로 변환
  • float() : "문자열"을 float형으로 변환
  • str () : "숫자"를 문자열로 변환

예제

A = int("10") #문자열 10을 정수 10으로 반환
print(type(A)) #int형으로 변환한 A
print(A) #A의 값은 10

4. ValueError 예외

  • 자료형 변환시 변환할 수 없는 것을 변환하려고 할 때 발생하는 에러

5. 파이썬 튜터

https://pythontutor.com/

  • 코드 흐름을 쉽게 이해할 수 있도록 시각적으로 분석해주는 도구

6. swap(스왑)

6.1. 정의

  • 두 변수의 값을 서로 교체하는 작업

6.2. 특징

  • 튜플 언패킹(Tuple Unpacking)을 사용하여 두 변수의 값을 한줄로 교환할 수 있다
  • 임시 변수가 필요없다
  • 간결하고 가독성이 좋다
  • 추가 메모리가 필요없다

6.3. 사용 방법

a = 5
b = 10


a, b = b, a   # Swap


print(a)  # 출력 10
print(b)  # 출력 5

7. Format()

7.1. 정의

  • 문자열을 원하는 형식으로 조작할 수 있도록 도와주는 함수

7.2. 기본 사용법

name = "Hee"
age = 20 

sentence = "안녕 나는 {}이고 {}살이야".format(name, age)
print(sentence)

출력
안녕 나는 Hee고 20살이야

  • 앞쪽에 있는 문자열의 {} 기호가 format() 함수 괄호 안에 있는 매개변수로 차례로 대치된다

7.3. 추가 사용

위치 정해주기

sentence = "{1}은 {0}보다 큽니다.".format(5, 10)
print(sentence)

출력
10은 5보다 큽니다

숫자를 문자열로 변환하기

A = "{}만원".format(50)
print(A)
print(type(A))

출력
50만원
<class 'str'>


정렬하기

word = "Python"

print("좌측 정렬: {:<10}".format(word))   
print("우측 정렬: {:>10}".format(word))   
print("가운데 정렬: {:^10}".format(word))

이 외에도 format()를 통한 다양한 포맷팅 가능


8. IndexError 예외

  • 인덱싱 가능한 자료형에서 존재하지 않는 인덱스에 접근할 때 발생하는 에러
  • {} 기호의 갯수가 format() 함수의 매개변수보다 많으면 발생
  • 매개변수가 {} 보다 많으면 {} 개수만큼 적용되고 버려짐

9. upper() 과 lower()

upper()

  • 문자열의 알파벳을 대문자로 바꾸는 함수

lower()

  • 문자열의 알파벳을 소문자로 바꾸는 함수

10. strip(), lstrip(), rstrip()

strip()

  • 문자열 양옆의 공백을 제거하는 함수
text = "   Hello, Python!   "
print(text.strip())  # 양쪽 공백 제거
print(text)

lstrip()

  • 문자열 왼쪽의 공백을 제거하는 함수

rstrip()

  • 문자열 오른쪽의 공백을 제거하는 함수

11. is___()

  • 참(True) 또는 거짓(False)을 반환하는 함수
  • 어떤 조건을 확인하거나 검증하는 역할

12. find(), rfind()

  • 문자열에서 특정 문자열의 위치(인덱스)를 찾는데 사용된다

find()

  • 문자열의 왼쪽(처음) 부터 검색하여 첫번째로 일치하는 위치를 반환

rfind()

  • 문자열의 오른쪽(끝) 부터 검색하여 첫번째로 일치하는 위치를 반환

예시

  • 검색 시 띄어쓰기(공백)나 콤마 마침표 같은 특수기호도 하나의 위치로 계산
text = "Hello, Python! Python is fun."

index_1 = text.find("Python")
index_2 = text.rfind("Python")
print(index_1)  #출력 7
print(index_2)  #출력 15

13. in 연산자

  • 특정 값이 시퀸스(문자열, 리스트, 튜플, 딕셔너리...등) 내에 존재하는지 확인해주는 연산자

기본 문법

값 in 시퀸스 
# 값이 시퀀스에 "포함되어 있으면" True, 없으면 False 반환
값 not 시퀸스 
# 값이 시퀀스에 "포함되어 있지 않으면" True, 있으면 False 반환

예시

text = "Hello, Python!"

print("Python" in text)   # True
print("Java" in text)     # False 
print("Hello" not in text) # False

14. f-string(Formatted String)

  • 문자열 내에서 변수를 간단하게 삽입하는 방법
  • 파이썬 3.6 이상 버전에서 도입

대부분의 상황에서는 f-string 사용한다 왜 ?
1. 표현식을 입력할 떄마다 str() 로 감싸줘야 해서 귀찮다
2. 문법이 간결 → format()보다 코드가 짧아지기 때문
3. format() 보다 속도가 빠르다

14.1. 기본 사용

name = "Hee"
age = 99

print(f"안녕하세요, 저는 {name}이고 {age}살입니다.")
# 안녕하세요, 저는 Hee이고 99살입니다.

14.2. 그럼 format()은 언제쓰는 것이 편한가

  1. 문자열 내용이 많을 때 : 데이터를 뒤에 모아서 볼 수 있기 때문
  2. 데이터를 리스트에 담아서 사용 할 때 : * 라는 전개 연산자 사용으로 전체 전개 가능
values = ["Alice", 25, "Seoul"]
print("이름: {}, 나이: {}, 도시: {}".format(*values))

14.3. f-string과 format() 비교

사용 상황f-string (f"").format() (.format())
Python 3.6 이상✅ 추천 (빠름)❌ 가능하지만 비효율적
Python 3.5 이하❌ 지원 안됨✅ 추천 (호환성)
단순한 문자열 포맷팅✅ 추천 (간결)❌ 불필요하게 길어짐
템플릿 재사용 (저장 후 값 삽입)❌ 불편.format()이 유리
딕셔너리/리스트 값 삽입❌ 불편.format(*list, **dict)
JSON, SQL, HTML 생성❌ 불편.format()이 적합

15. 조건문

15.1.종류

if 조건:
    # 조건이 참(True)일 때 실행할 코드
    
elif 다른_조건:
    # 첫 번째 조건이 거짓(False)이고, 이 조건이 참(True)일 때 실행
    
else:
    # 모든 조건이 거짓(False)일 때 실행할 코드
  • if → 기본 조건문
  • if-else → 조건이 False일 때 실행할 코드 추가
  • if-elif-else → 여러 조건 검사
  • 간단한 조건문 → if 조건 else 표현식

15.2. False로 변환되는 값

타입Falsy 값 (False로 변환됨)
논리형 (bool)False
숫자형 (int, float, complex)0, 0.0, 0j (복소수 0j)
문자열 (str)"" (빈 문자열)
리스트 (list)[] (빈 리스트)
튜플 (tuple)() (빈 튜플)
딕셔너리 (dict){} (빈 딕셔너리)
집합 (set)set() (빈 집합)
NoneType (None)None
사용자 정의 객체__bool__() 또는 __len__() 메서드가 False를 반환하는 경우

15.3. pass 키워드

정의

  • 아무동작도 하지않는 Empty 코드 블록을 만들 때 사용한다
  • 실행할 코드가 없을 때 비워두는 역할

사용해야하는 이유?

  • 파이썬은 들여쓰기가 중요한 언어로 빈 코드 블록을 둘 수 없다
  • 구문이 필요하지만 실행할 내용이 없을 때 사용해야한다
if True:
    pass  
    # 실행할 코드가 없지만 문법 오류 방지를 위해 사용

일부러 오류 발생시키기기 가능

  • raise NotImplementedError 삽입

🔎 키워드 체크

  • 미래의 까먹을 나를 위해 다시 적어두는 키워드...

변수 개념 ✅
복합 대입 연산자 ✅
input() 함수 ✅
cast의 정의와 종류 ✅
파이썬 튜터 ✅
swap의 정의와 사용 방법 ✅
format() 함수 쓰기 ✅
IndexError 예외 ✅
strip(), lstrip(), rstrip() ✅
is___()함수 역할 ✅
find(), rfind() 함수의 차이와 역할✅
in 연산자 ✅
f-string과 format()함수의 차이 ✅
기본 조건문 사용법 ✅
False로 변환되는 값 ✅
pass 키워드 사용 <-> raise NotImplementedError ✅

profile
기록장

0개의 댓글

관련 채용 정보