1. for 반복문

 

🚀   값의 범위나 횟수가 정해져 있을 때 사용하면 편리한 반복문

🚀  for 반복문은 리스트에 있는 요소 하나하나가 변수에 들어가며 차례차례 반복하게 됨

       ➡️  print() 함수로 출력하게 되면 리스트 요소가 차례차례 출력됨
🚀   반복가능객체 ?
        a. 시퀀스 sequence 자료형 : 순서를 가지고 있는 자료형 ( 문자열, 리스트, 튜플, range )
        b. 비시퀀스 non-sequence 자료형 : 순서를 가지고 있지 않은 자료형 ( 세트, 딕셔너리 )

# 기본 구조 
for 변수 in 반복가능객체 :
    반복실행문

 

1) 문자열

for ch in 'Hello':  # 문자열 내부의 문자를 하나씩 꺼내서 사용할 수 있음
    print(ch)
    
'''    
실행결과)
H
e
l
l
o
'''

 


 

2) 리스트

for item in ['가위', '바위', '보']:
    print(item)

# 인덱스 번호 사용 1) 변수생성. 비추천
n = 0
for item in ['가위', '바위', '보']:
    print(f'{n} {item}')
    n += 1

# 인덱스 번호 사용 2) enumerate() 사용. 추천
li = ['가위', '바위', '보']
for i, v in enumerate(li):  # i:index, v:요소의 값 value
    print(f'{i} {v}')

실행 결과

 


 

3) 리스트 내포

# 기본형식
리스트 = [표현식 for 변수 in 반복가능객체]
li = [n * 2 for n in [1, 2, 3]]
print(li)  # [2, 4, 6]

# 조건에 맞는 데이터만 추출 가능
# 리스트 = [표현식 for 변수 in 반복가능객체 if 조건식]
li = [n * 2 for n in [1, 2, 3, 4, 5]]
print(li)  # [2, 4, 6, 8, 10]

li = [n * 2 for n in [1, 2, 3, 4, 5] if n % 2 == 1]  # 1, 3, 5만 추출
print(li)  # [2, 6, 10]

# 리스트 내포를 사용하지 않으면
li = []
for n in [1, 2, 3, 4, 5]:
    if n % 2 == 1:
        li.append(n * 2)
print(li)

 


 

4) 세트 set

👩🏻‍💻  수학의 집합 개념을 구현한 자료형
👩🏻‍💻  저장된 값들은 순서가 없기 때문에 인덱싱과 슬라이싱을 사용할 수 없음
👩🏻‍💻  대신 중복된 값의 저장이 불가능해서 중복 제거용으로 사용

 

    ⚡️  특징
        a. 중복된 값을 저장할 수 없음
        b. 저장되는 순서가 없음

# 중괄호({}) 또는 set() 함수를 이용하여 생성
li = [1, 1, 2, 2, 3, 3]
print(li)  # [1, 1, 2, 2, 3, 3]
print(set(li)) # {1, 2, 3}
li = list(set(li))  #중복된 값을 제거
print(li) # [1, 2, 3]
# 추가를 할 때 add() 메소드 사용
s = {10, 20, 30}
s.add(40) # 세트에 40을 추가
print(s) #{40, 10, 20, 30} / 저장된는 요소들은 순서가 없음

# 삭제를 할 때는 remove()나 discard() 메소드 사용
s.remove(20) # 세트에서 20을 제거. 20이 없으면 오류가 발생
print(s) # {40, 10, 30}

s.discard(30) # 세트에서 30을 제거. 30이 없어도 오류가 발생하지 않음
print(s) # {40, 10}

 

📌  for 반복문과 세트

# 기본형식
for 요소 in {세트}:
    반복실행문
for item in {'가위', '바위', '보'}:  # 순서가 지켜지지 않음
    print(item)

# 실행결과
# 바위
# 보
# 가위

 


 

5)  딕셔너리  

  👾  key와 value의 조합이라 다른 자료형과 다른 방식으로 사용을 함 (키만 출력)

person = {'name': '에밀리', 'age': 20}
for item in person:
    print(item)  # name age

# value 출력
for key, value in person.items():
    print(f'{key}:{value}')

for key in person:
    print(person[key])  # 에밀리 20

for key in person:  # get() 메소드를 이용해서 해당 key에 해당하는 value를 가져옴
    print(person.get(key))  # 에밀리 20

# 영어사전을 딕셔너리 자료형으로 구현하고
# 영어 사전에 등록된 모든 단어와 그 단어의 의미를 출력
eng_dict = {
    'sun': '태양',
    'moon': '달',
    'star': '별',
    'space': '우주'
}
for word in eng_dict:
    print(f'{word}의 뜻: {eng_dict.get(word)}')
    print(f'{word}의 뜻: {eng_dict[word]}')

 


 

2. 중첩 리스트와 중첩 반복문

 

🚀  반복문을 여러 겹 중첩해 사용하면 중첩 반복문

🚀  [1,2,3] 처럼 리스트가 한 겹으로 감싸진 리스트를 1차원 리스트

🚀  [[1,2,3], [4,5,6], [7,8,9]] 처럼 두 겹으로 감싸진 리스트를 2차원 리스트

 

# 2차원 리스트 반복문 한 번 사용
list_of_list = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8]
]

for items in list_of_list:
    print(items)
    
'''
실행결과)
[1, 2, 3]
[4, 5, 6]
[7, 8]
'''
# 2차원 리스트 반복문 두 번 사용
list_of_list = [
    [1, 2, 3]
    [4, 5, 6]
    [7, 8]
]

for items in list_of_list:
    for item in itmes:
        print(item)
'''
실행결과)
1
2
3
4
5
6
7
8
'''

 


 

3. 전개 연산자

 

🚀  전개 연산자를 사용하면 리스트 내용을 전개해서 입력할 수 있다.

🚀  리스트 내부와 함수의 매개변수 위치에 사용

# 리스트 내부에 사용하는 경우
a = [1, 2, 3, 4]
b = [*a]  # [1, 2, 3, 4]
c = [*b, 5]  # [1, 2, 3, 4, 5]
# -> b 내용에 어떠한 영향도 없이 새로운 리스트 c가 만들어짐

# 함수 매개변수 위치에 사용하는 경우
a = [1, 2, 3, 4]
print(*a)  # 1 2 3 4

 

 

 

 

 

[ 내용 참고 : IT 학원 강의 및 책 '혼자 공부하는 파이썬' ]


 

1. 리스트  list

 

🚀  사전적 의미는 '목록'이며 파이썬에서 리스트 의미는 여러가지 자료를 저장할 수 있는 자료

🚀  저장하고자 하는 값들의 자료형(type)이 서로 다르더라도 하나의 리스트에 저장

 

  ⚡️  리스트를 생성하는 방법 : 대괄호 []에 자료를 쉼표로 구분해서 입력 또는 리스트 함수 list() 를 이용해서 생성

  ⚡️  대괄호 내부에 넣는 자료를 요소 element 라고 한다

[요소, 요소, 요소...]

 

# 정수, 실수, 문자열을 각 1개씩 저장하고 있는 리스트 생성
li = [100, 3.14, 'hello']
print(li)  # [100, 3.14, 'hello']
print(type(li))  # <class 'list'>

 

 

100 3.14 hello

                   [0]                                       [1]                                       [2]

                   [-3]                                     [-2]                                     [-1]

 

  👾  각각의 요소는 위와 같은 형태로 저장 된다.

  👾  대괄호 [] 안에 들어간 숫자를 인덱스 index라 부르며, 0부터 센다.

  👾  뒤에서부터 문자를 선택할 때 0이아닌 -1부터 센다

 


 

💡 리스트 접근 연산자를 이중으로 사용하는 방법

list = [333, 7, 'hello', True]
list[2]  # hello
list[2][0]  # h

 

👾  list [2]를 지정하면 'hello'를 꺼내오고 list[2][0] 이면 'hello'에서 다시 0번째를 가져와 출력

 


 

💡  리스트 안에 리스트 사용 가능

list = [[1,2,3], [4,5,6], [7,8,9]]
list[1]  # [4,5,6]
list[1][1]  # [5]

 


 

2. 리스트 연산하기: 연결(+), 반복(*), len()

 

🚀  문자열과 리스트는 비슷한 자료형으로 사용할 수 있는 연산자와 함수도 비슷함

# 리스트 선언
list_a = [1,2,3]
list_b = [4,5,6]

# 출력
print("list_a = ", list_a)
print("list_b = ", list_b)
print()

# 기본 연산자
print("list_a + list_b = ", list_a + list_b)  # 자료 연결
print("list_a * 3 = ", list_a * 3)  # 자료 반복
print()

# 함수
print("len(list_a) = ", len(list_a))

실행 결과

 


 

3. 리스트 정렬: sort(), sorted(), reverse = True

 

🚀  sort(), sorted()는 리스트 요소를 정렬할 때 쓰는 함수로 기본 오름차순 정렬이다

🚀  reverse = True 옵션을 추가할 경우 내림차순 정렬로 반환

리스트.sort()  # 원본이 정렬됨
sorted(리스트명)  # 원본이 정렬된 것 x

 

list_a = [33, 100, 1, 6, 29]
list_a.sort()  # 오름차순 정렬
print(list_a)  # [1, 6, 29, 33, 100]

 

my_list2 = ['b', 'c', 'a', 'd']
print(sorted(my_list2))  # ['a', 'b', 'c', 'd']
print(sorted(my_list2, reverse=True))  # ['d', 'c', 'b', 'a']

my_list = [6, 3, 1, 2, 5, 4]
print(sorted(my_list))  # [1, 2, 3, 4, 5, 6]
print(sorted(my_list, reverse=False))  # [1, 2, 3, 4, 5, 6]
print(sorted(my_list, reverse=True))  # [6, 5, 4, 3, 2, 1]

print(sorted(my_list))  # [1, 2, 3, 4, 5, 6]
print(my_list)  # [6, 3, 1, 2, 5, 4] / 실제로 정렬이 된건 아님

my_list = sorted(my_list)  # 오름차순 정렬 결과를 덮어쓰기
print(my_list)  # [1, 2, 3, 4, 5, 6]

 


 

4. 리스트 내부에 있는지 확인: in/not in 연산자

 

🚀  특정 값이 리스트 내부에 있는지 확인하기 위해 in 연산자 사용

🚀  리스트 내부에 값이 있으면 True, 없으면 False를 출력

🚀  not in 연산자는 리스트 내부에 해당 값이 없는지 확인하는 연산자

 

값 in 리스트
list_a = [273, 33, 100, 51, 99]
273 in list_a  # True
98 in list_a  # False

273 not in list_a  # False
98 not in list_a  # True

 

 

 

 

 

[ 내용 참고 : IT 학원 강의 자료 및 책 '혼자 공부하는 파이썬' ]


 

1. else 조건문

 

🐰  if 조건문 뒤에 사용하며 if 조건문의 조건이 거짓일 때 실행

# if 조건식
#    조건식의 결과가 True일 때 실행문
# else :
#    조건식의 결과가 False일 때 실행문

 

num = 6
if num >= 0:
   print('양수')
else:
   print('음수')

 


 

2. elif 구문

 

🐰  세 개이상의 조건을 연결해서 사용하는 조건문

# if 조건식1 :
#    조건식1의 결과가 True일 때 실행문
# elif 조건식2 :
#    조건식1의 결과가 False이고, 조건식2의 결과가 True일 때 실행문
# elif 조건식3 :
#    조건식1, 2의 결과가 False이고, 조건식3의 결과가 True일 때 실행문
# else :
#    조건식1, 2, 3의 결과가 False일 때 실행문

 

# 나이를 입력받아 7살 이하면 '미취학', 8~13살이면 '초등학생', 14 ~ 16살이면 '중학생',
# 17 ~ 19살이면 '고등학생', 20살 이상이면 '성인'을 출력하는 프로그램입니다.
age = int(input('몇 살입니까? >>> ')) # int() 함수를 이용해서 정수로 변환
if age <= 7:
   print('미취학')
elif age <= 13:
   print('초등학생')
elif age <= 16:
   print('중학생')
elif age <= 19:
   print('고등학생')
else:
   print('성인')

 

  📌  else 구문과 elif 구문은 이전의 조건이 맞지 않을 때 넘어오는 부분

         ➡️ 이미 제외된 조건을 한번 더 검사할 필요 없기 때문에 위의 예제와 같이 간단하게 표현 가능

 


 

3.  pass 키워드

 

🐰  프로그래밍을 하다 보면 전체 골격을 잡아 놓고 내부에서 처리할 내용은 나중에 채워넣는 경우가 있음

       ➡️  이런 경우 if 조건문에 구현 내용을 아무 것도 적어 놓지 않으면 error가 발생함

       ➡️  이때 '곧 개발하겠음' 이라는 의미로 'pass' 키워드를 넣어주면 error가 발생하지 않는다

 

# pass 키워드를 사용한 미구현 부분 입력

num = int(input('정수 입력 >>> '))
if num > 0:
    # 양수일 때 : 미구현 상태
    pass
else:
    # 음수일 때 : 미구현 상태
    pass

 


 

💡 raise NotImplementedError

   -  아직 구현하지 부분이라는 의미의 오류를 강제로 발생하게 함

 

num = int(input('정수 입력 >>> ')

if num > 0:
    # 양수일 때
    raise NotImplemetedError
else:
    # 음수일 때
    raise NotImplementedError

 

 

 

 

 

[ 내용 참고 : IT학원 강의 및 책 '혼자 공부하는 파이썬' ]


 

1. 불  자료형

 

👩🏻‍🚀  불린 Boolean 은 오직 참 True과 거짓 False 값만 가진다.

        ▶️ '어떤 명제'의 결과가 될 때 의미를 갖는다.

 

 

1) 비교연산자

  • 불은 비교연산자를 통해 만들 수 있다.
연산자 설명
== 같다
!= 다르다
< 작다
> 크다
<= 작거나 같다
>= 크거나 같다

 

# True나 False 모두 첫 글자는 반드시 대문자로 작성
# 파이썬에는 False는 값이 없는 모든 경우를 의미. 숫자0, 빈 문자열'', 빈 리스트[] 등은 모두 False로 인식

print(bool(0))  # False
print(bool(''))  # False
print(bool([]))  # False
print(type(True))  # <class 'bool'>

print("가방" == "가방")  # True
print("가방" < "하마")   # True

 

  📌  문자열도 비교 연산자 적용 가능하다. 사전 순서로 '가방'이 '하마'보다 앞에 있기 때문에 작은 값이다.

 

a = 15
print(f'{a} > 10 : {a > 10}') # True
print('{} < 10 : {}'.format(a, a < 10)) # False
print('{} >= 10 : {}'.format(a, a >= 10)) # True
print('{} <= 10 : {}'.format(a, a <= 10)) # False
print('{} == 10 : {}'.format(a, a == 10)) # False
print('{} != 10 : {}'.format(a, a != 10)) # True

 


 

2) 논리 연산자

 

 

연산자 의미 설명
not 아니다 불을 반대로 전환
and 그리고 피연산자 두 개가 모두 참일 때 True, 그 외 모두 False
or 또는 피연산자 두 개 중에 하나만 참이라도 True, 모두 거짓일 때 False

 

📌   not  연산자

  • 단항 연산자로, 참과 거짓을 반대로 바꿀 때 사용
a = 10
b = 0
print('not {} : {}'.format(a, not a)) # False
print('not {} : {}'.format(b, not b)) # True

 

 

📌   and 연산자와  or 연산자

 

[ and 연산자 ]

좌변 우변 결과
True True True
True False False
False True False
False False False

 

[ or 연산자 ]

좌변 우변 결과
True True True
True False True
False True True
False False False

 

a = 10
b = 0
print('{} > 0 and {} > 0 : {}'.format(a, b, a > 0 and b > 0)) # False
print('{} > 0 or {} > 0 : {}'.format(a, b, a > 0 or b > 0)) # True

 


 

2.  if 조건문

 

👩🏻‍💻  파이썬에서 if 조건문은 조건에 따라 코드를 실행하거나, 실행하지 않게 만들고 싶을 때 사용

👩🏻‍💻  이렇게 조건을 기반으로 실행의 흐름을 변경하는 것을 '조건 분기'라고 함

# 기본적인 구조
if 불 값이 나오는 표현식:  
  # if 조건문 뒤에 반드시 콜론(:)을 붙인다
    불 값이 참일 때 실행할 문장
    # 4칸 들여쓰기 한다 -> 들여쓰기 안하면 오류 발생!

 

num = 15
if num > 0:
   print('양수') # 조건식이 True라서 실행이 됨

if True:
   print('양수')

if False:
   print('양수')

 


💡  들여쓰기 indentation 규칙


    a. 공백 space이나 탭 tab을 이용하여 들여쓰기를 수행.
    b. 공백의 개수는 상관이 없음
    c. 탭은 1개만 사용
    d. 동일 구역에서 들여쓰기는 통일해야 함. 공백과 탭을 혼용하여 사용할 수 없고 들여쓰기 수준도 동일해야 함
    e. 주로 사용하는 들여쓰기는 공백 4개, 공백 2개, 탭 1개.

if num > 0: print('양수')  # 실행문이 하나면 한 줄 코드로 가능

 


 

3.  짝수와 홀수 구분

 

# 입력 받기
num = input('정수 입력 >>> ')

# 마지막 자리 숫자 추출
last_num = num[-1]

# 짝수 확인
if last_num in '02468':
    print('짝수입니다.')

# 홀수 확인
if last_num in '13579':
    print('홀수입니다.')

 


# 나머지 연산자 활용 예제
# 임의의 정수를 입력받은 뒤 해당 값이 3의 배수인지 아닌지 판별하는 프로그램을 구현하세요
'''
실행 예)
정수를 입력하세요 >>> 14
14는 3의 배수가 아닙니다.
---------------------
정수를 입력하세요 >>> 15
15는 3의 배수입니다.
'''

num = int(input('정수를 입력하세요 >>> '))
if (num % 3) == 0:
    print(f'{num}는 3의 배수입니다.')
else:
    print(f'{num}는 3의 배수가 아닙니다.')

print(f'{num}는 3의 {"배수입니다."if (num % 3) == 0 else "배수가 아닙니다."}')

 

 

 

 

 

 

[ 내용 참고 : IT 학원 강의 및 책 '혼자 공부하는 파이썬' ]


 

1.  format() 함수

 

👩🏻‍💻  숫자를 문자열로 변환하는 함수로 중괄호{}를 포함한 문자열 뒤에 마침표(.)를 찍고 format() 함수를 사용

       ▶️  중괄호 개수와 format() 함수 괄호 안 매개변수의 개수는 반드시 같아야 함

"{}".format(10)
"{} {}".format(10,20)

 

   📌 위의 구문과 같이 앞쪽에 있는 문자열 {} 기호가 format() 함수 괄호 안에 있는 매개 변수로 차례로 대치되면서 숫자가 문자열로 되는 것

 

zipcode = '06236'
print('우편번호 : {}'.format(zipcode)) # format() 메서드를 이용해 출력
# 결과) 우편번호 : 06236

zipcode_str = '우편번호 : {}'.format(zipcode)
print(zipcode_str)
# 결과) 우편번호 : 06236

address = '''서울특별시 강남구
테헤란로 146''' # multi line
print('주소 : {addr}'.format(addr=address))  # format() 메서드의 변수 이용
# 결과) 주소 : 서울특별시 강남구
# 테헤란로 146

 

  📌  {} 기호의 개수가 format() 함수의 매개변수 개수보다 많으면 IndexError 예외가 발생

 


2.  format() 함수의 다양한 기능

 

1) 정수 출력의 다양한 형태

# 정수를 특정 칸에 출력하기

# 정수
num_a = "{:d}".format(52)

# 특정 칸에 출력하기
num_b = "{:5d}".format(52)  # 5칸
num_c = "{:10d}".format(52) # 10칸

# 빈칸을 0으로 채우기
num_d = "{:05d}".format(52)  # 양수
num_e = "{:05d}".format(-52) # 음수

print('# 기본')
print(num_a)
print('# 특정 칸에 출력하기')
print(num_b)
print(num_c)
print('# 빈칸을 0으로 채우기')
print(num_d)
print(num_e)

 

실행결과

 

📌  {:d}는 int 자료형의 정수를 출력하겠다고 직접적으로 지정하는 것

       ➡️ 매개변수로 정수만 올 수 있다.

📌  {:5d}는 5칸을 빈칸으로 잡고 뒤에서부터 52라는 숫자를 채운다.

📌  {:05d}는 5칸을 잡고 뒤에서부터 52라는 숫자를 넣은 후 앞의 빈곳을 0으로 채운다.

       ➡️ 부호가 있을 때는 맨 앞자리를 부호로 채우고 나머지 빈 곳을 0으로 채움

 

 


# 기호와 함께 출력하기
num_a = "{:+d}".format(33)  # 양수
num_b = "{:+d}".format(-33) # 음수
num_c = "{: d}".format(33) # 양수: 기호 부분 공백
num_d = "{: d}".format(-33)# 음수: 기호 부분 공백

print("# 기호와 함께 출력하기")
print(num_a)
print(num_b)
print(num_c)
print(num_d)

 

 

📌  {:+d} 와 같이 d앞에 +기호를 붙이면 양수와 음수 기호를 표현할 수 있다.

📌  {: d} 처럼 앞에 공백을 두어 기호 위치를 비워주면 함수에 입력한 기호가 표현된다.

 

 

 

 

# < : 지정된 공간 내에서 왼쪽 정렬
# > : 지정된 공간 내에서 오른쪽 정렬
# ^ : 지정된 공간 내에서 가운데 정렬

# 10d는 10자리의 필드 폭을 의미
print("10자리 폭 왼 쪽 정렬 '{:<10d}'".format(123))  
# 10자리 폭 왼 쪽 정렬 '123       '

print("10자리 폭 오른 쪽 정렬 '{:>10d}'".format(123))  
# 10자리 폭 오른 쪽 정렬 '       123'

print("10자리 폭 가운데 정렬 '{:^10d}'".format(123))  
# 10자리 폭 가운데 정렬 '   123    '
print()

# 채움문자를 지정하면 공백 대신 채움문자가 빈자리를 채움
print("10자리 폭 왼 쪽 정렬 채움문자 '{:*<10d}'".format(123))  
# 10자리 폭 왼 쪽 정렬 채움문자 '123*******'
print("10자리 폭 오른 쪽 정렬 채움문자 '{:*>10d}'".format(123))  
# 10자리 폭 오른 쪽 정렬 채움문자 '*******123'
print("10자리 폭 가운데 쪽 정렬 채움문자 '{:*^10d}'".format(123))  
# 10자리 폭 가운데 쪽 정렬 채움문자 '***123****'

 

 


 

# 조합하기
num_a = "{:+5d}".format(33)  # 기호를 뒤로 밀기: 양수
num_b = "{:+5d}".format(-33) # 기호를 뒤로 밀기: 음수
num_c = "{:=+5d}".format(33) # 기호를 앞으로 밀기: 양수
num_d = "{:=+5d}".format(-33) # 기호를 앞으로 밀기: 음수
num_e = "{:+05d}".format(33)  # 0으로 채우기: 양수
num_f = "{:+05d}".format(-33) # 0으로 채우기: 음수

print("# 조합하기")
print(num_a)
print(num_b)
print(num_c)
print(num_d)
print(num_e)
print(num_f)

 

 

 

📌  기호와 공백을 조합할 때 '=' 기호를 앞에 붙일 수 있다.

        ➡️ 5칸의 공간을 잡았을 때 기호를 빈칸 앞에 붙일 것인지, 숫자 앞에 붙일 것인지 지정

 

 

 

 

 

 

 


# 부동 소수점 출력의 다양한 형태
num_a = "{:f}".format(12.345)
num_b = "{:15f}".format(12.345)   # 15칸 만들기
num_c = "{:+15f}".format(12.345)  # 15칸에 부호 추가하기
num_d = "{:+015f}".format(12.345) # 15칸에 부호 추가하고 0으로 채우기

print(num_a)
print(num_b)
print(num_c)
print(num_d)

 

실행 결과

 

# 소수점 아래 자릿수 지정하기
num_a = "{:15.3f}".format(12.345)
num_b = "{:15.2f}".format(12.345)
num_c = "{:15.1f}".format(12.345)

print(num_a)
print(num_b)
print(num_c)

실행 결과

 

📌  15칸을 잡고 소수점을 각각 3자리, 2자리, 1자리로 출력

        ➡️  자동으로 반올림도 일어남

 

 

 


# 의미없는 소수점 제거
num_a = 33.0
num_b = "{:g}".format(num_a)

print(num_a)
print(num_b)

실행 결과

 


3. f-문자열

👩🏻‍💻  formatted strings ; 파이썬 3.6이후 버전에서 사용 가능

👩🏻‍💻  문자열 앞에 'f'를 붙여서 만드는데, 문자열 내부에 표현식을 {} 괄호로 감싸서 삽입할 수 있다.

 

f'문자열{표현식}문자열'

 

who = 'you'
how = 'happy'
print(f'{who} make me {how}') # you make me happy / 문자열에 f 또는 F라는 접두어 prefix를 붙임

age = 25
print(f'내년엔 {age + 1}살이 됩니다.')  # 내년엔 26살이 됩니다.

 

  📌  format() 함수보다 간단하고 직관적이라 대부분 f-문자열을 사용하는 편

 

 

💡 format() 함수를 사용하는 것이 더 좋은 경우

 

   a)  문자열 내용이 너무 많을 때

      - f-문자열을 사용하면 어떤 데이터를 삽입하여 출력하는지 확인하기 위해 문자열을 모두 읽어야 하는 문제가 있다.

   b)  데이터를 리스트에 담아서 사용할 때

     - 리스트를 f-문자열로 형식화해서 출력하려면 [] 기호로 일일이 리스트 요소에 접근해야 하지만,

        format() 함수와 전개 연산자를 사용하면 더 간단하게 입력하여 리스트 요소를 한꺼번에 출력 가능

 

data = ['별', 2, 'M', '서울특별시 강서구', 'Y']
f"""이름: {data[0]}
나이: {data[1]}
성별: {data[2]}
지역: {data[3]}
중성화 여부: {data[4]}"""

"""이름: {}
나이: {}
성별: {}
지역: {}
중성화 여부: {}""".format(*data)

'''
실행결과)
이름: 별
나이: 2
성별: M
지역: 서울특별시 강서구
중성화 여부: Y
'''

 


4. 문자열의 구성 파악하기: isOO()

 

👩🏻‍💻  문자열이 소문자로만 구성되어 있는지, 알파벳으로만 구성되어 있는지, 숫자로만 구성되어 있는지 등을 확인할 때 사용

isalnum() 문자열이 알파벳 또는 숫자로만 구성되어 있는지 확인
isalpha() 문자열이 알파벳으로만 구성되어 있는지 확인
isidentifier() 문자열이 식별자로 사용할 수 있는지 확인
isdecimal() 문자열이 정수 형태인지 확인
isdigit() 문자열이 숫자로 인식될 수 있는 것인지 확인
isspace() 문자열이 공백으로만 구성되어 있는지 확인
islower() 문자열이 소문자로만 구성되어 있는지 확인
isupper() 문자열이 대문자로만 구성되어 있는지 확인

 

print("Python1".isalnum())
# 실행결과) True

print("33".isdigit())
# 실행결과) True

 

 

 


 

5.  문자열과 'in 연산자'

👩🏻‍💻  문자열 내부에 어떤 문자열이 있는지 확인할 때 'in 연산자' 사용

👩🏻‍💻  리턴 값은 boolean 형 (True / False)

 

print("영희" in "내 이름은 영희입니다.")  # True
print("안녕" in "내 이름은 영희입니다.")  # False

 

 

 

 

 

[ 내용 참고 : 책 '혼자 공부하는 파이썬' 및 IT 학원 강의 자료 ]

 


 

1.  숫자의 종류

 

  👾  정수 integer : 소숫점이 없는 숫자
  👾  실수 floating point : 소수점이 있는 숫자

 

print(type(100))  # <class 'int'>
print(type(3.14)) # <class 'float'>

 

 


 

2. 숫자 연산자

 

a = 7
b = 2
print('{} + {} = {}'.format(a, b, a+b))   # 7 + 2 = 9 / + 덧셈
print('{} - {} = {}'.format(a, b, a-b))   # 7 - 2 = 5 / - 뺄셈
print('{} * {} = {}'.format(a, b, a*b))   # 7 * 2 = 14 / * 곱셈
print('{}/{} = {}'.format(a, b, a/b))     # 7/2 = 3.5 / /나눗셈
print('{} ** {} = {}'.format(a, b, a**b)) # 7 ** 2 = 49 / ** 거듭제곱
print('{} // {} = {}'.format(a, b, a//b)) # 7 // 2 = 3 / //몫
print('{} % {} = {}'.format(a, b, a%b))   # 7 % 2 = 1 / % 나머지

 

 

1)  사칙 연산자 ( +, -, *, / )

 

연산자 설명 구문
+ 덧셈 숫자 + 숫자
- 뺄셈 숫자 - 숫자
* 곱셈 숫자 * 숫자
/ 나눗셈 숫자 / 숫자

 

 

2)  정수 나누기 연산자 : //

  -  숫자를 나누고 소수점 이하의 자릿수를 떼어 버린 후 정수 부분만 남기는 것 = 몫

 

 

3)  나머지 연산자 : %

  -  A를 B로 나누었을 때 남은 나머지를 구하는 연산자

 

 

4)  제곱 연산자 : **

  -  2 ** 4 = 2 * 2 * 2 * 2

 

 


 

3. 연산자의 우선순위

 

👾  곱셈과 나눗셈이 덧셈과 뺄셈보다 우선

👾  같은 우선순위인 경우 연산자는 왼쪽에서 오른쪽 순서로 계산

👾  덧셈이나 뺄셈이 곱셈과 나눗셈보다 먼저 계산되도록 하고 싶다면 괄호() 사용

 

print ((5+3) * 2)
# 결과: 16

 

 


4. TypeError 예외

👩🏻‍💻  서로 다른 자료를 연산하면 발생

# TypeError가 발생하는 경우
string = "문자열"
number = 273
string + number

 

 


 

5.  변수

 

👩🏻‍💻  변수는 값을 저장할 때 사용하는 식별자

👩🏻‍💻  파이썬에서 pi를 변수라고 하며 숫자 뿐만 아니라 모든 자료형을 저장

 

1)  변수를 활용하는 방법

 

   a.  변수를 선언 및 값 할당

# 변수 선언
pi = 3.14159265
''' 
여기서 기호 '='는 같다는 의미가 아닌 우변의 값을
좌변에 '넣겠다', '할당하겠다'를 의미
'''

 

 

   b.  변수 참조

     -  변수에서 값을 꺼내는 것을 의미 

# 변수 참조
2 * pi * r
'''
3.14159265 값을 직접 쓰지 않고
pi를 써서 안에 들어있는 값을 사용
'''

 


 

💡 파이썬은 다른 프로그래밍 언어와 달리 변수에 자료형 지정 x

 

name = 'Alice'  # single line 문자열 저장
age = 25  # 정수를 저장
address = '''
우편번호 12345
서울시 영등포구 여의도동
서울빌딩 501호
'''  # multiple line 문자열 저장
boyfriend = None  # 아무 값도 저장하지 않음
height = 168.5  # 실수를 저장

print(name)  # Alice
print(age)   # 25
print(address) 
#우편번호 12345
 서울시 영등포구 여의도동
 서울빌딩 501호 
print(boyfriend) # None
print(height)    # 168.5

 

 



6.  복합 대입 연산자

 

연산자 이름 설명
+= 숫자 덧셈 후 대입
-= 숫자 뺄셈 후 대입
*= 숫자 곱셈 후 대입
/= 숫자 나눗셈 후 대입
%= 숫자의 나머지를 구한 후 대입
**= 숫자 제곱 후 대입

 

c = 10

c = c + 10
print(c) # 20

c += 10
print(c) # 30

c -= 10
print(c) # 20

c //= 10
print(c) # 2

c *= 10
print(c) # 20

 

 


 

📌  문자열 복합 대입 연산자

연산자 이름 설명
+= 문자열 연결 후 대입
*= 문자열 반복 후 대입

 

string = "안녕하세요"
string += "!"
string += "!"
print("string:", string)
# 결과 : 안녕하세요!!

 

 


 

7.  사용자 입력 :  input()

 

👾  사용자로부터 데이터를 입력받을 때 사용하는 함수

👾  input 함수 괄호 안에 입력한 내용을 프롬프트 문자열

 

n = input('정수를 입력하세요.') # 100
print(n)  #'100'
print(type(n))  # <class 'str'> / input() 함수는 모든 입력을 '문자열 str'로 저장

  

  ⚡️  input() 함수는 숫자를 입력해도 결과는 문자열 자료형으로 리턴된다.

 


 

  📌  문자열을 숫자로 바꾸기

      - 영어로 'cast' 형변환 이라고 함

# 정수로 형변환
n = int(input('정수를 입력하세요.')) 
#n = input('정수를 입력하세요.') #100
#n = int(n)
print(type(n)) # <class 'int'>
# 실수형으로 형변환
a = float(input('첫 번째 실수를 입력하세요 >>> '))
b = float(input('두 번째 실수를 입력하세요 >>> '))

print(f'{a}와 {b}의 합은 {a+b}입니다.')

 


 

  📌 숫자를 문자열로 바꾸기

str(다른 자료형)

print(type(str(3.14))) 
# <class 'str'> '3.14' / 실수 3.14를 문자열 '3.14'로 변환

 

 


8.  ValueError 예외

 

👩🏻‍💻  자료형을 변환할 때 '변환할 수 없는 것'을 변환하려고 하면 발생하는 예외

 

     1) 숫자가 아닌 것을 숫자로 변환

int("안녕하세요")

 

     2) 소수점이 있는 숫자 형식의 문자열을 int() 함수로 변환 

int("10.234")

 

 

 

 

[ 내용 참고 : 책 '혼자 공부하는 파이썬' 및 IT 학원 강의 자료 ]

+ Recent posts