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. 리스트 요소 추가

 

1)  append()

 

👾 '리스트의 끝'에 인수로 전달된 데이터를 추가하는 함수

리스트명.append(요소)
# 리스트 선언
my_list = ['apple', 'banana']
# 리스트 뒤에 요소 추가
my_list.append('cherry')
print(my_list)  # ['apple', 'banana', 'cherry']

 


 

2)  insert()

 

👾  리스트의 특정 인덱스에 데이터를 추가

리스트명.insert(위치, 요소)
# 리스트 선언
my_list = ['apple', 'banana']
# 0번 인덱스에 요소 추가
my_list.insert(0,'cherry')
print(my_list)  # ['cherry', 'apple', 'banana']

 


 

3) extend()

 

👾  한 번에 여러 요소를 추가하고 싶을 때 사용, 매개 변수로 리스트를 입력한다.

       ▶️ 리스트에 다른 리스트나 튜플과 같은 반복가능객체를 추가하여 기존 리스트를 확장

👾  원래 리스트 뒤에 새로운 리스트 요소를 추가

my_list = ['apple', 'banana']
my_list.extend(['cherry', 'mango'])
print(my_list)  # ['apple', 'banana', 'cherry', 'mango']

my_list = ['apple', 'banana']
my_list += ['cherry', 'mango']
print(my_list)  # ['apple', 'banana', 'cherry', 'mango']

 

  📌 리스트 연결 연산자와 요소 추가의 차이

 

    - 리스트 연결 연산자와 extend() 함수는 비슷한 형태로 동작

    - 차이점리스트 연결 연산자는 원본에 어떠한 영향도 주지 않는 '비파괴적'   

                       리스트에 직접적인 영향을 주는 함수 (append(), insert(), extend()) 또는 연산을 '파괴적'

''' 리스트 연결 연산자 '''
list_a = [1, 2, 3]
list_b = [4, 5, 6]
list_a + list_b
# 실행결과 : [1, 2, 3, 4, 5, 6]
print(list_a) # [1, 2, 3]
print(list_b) # [4, 5, 6]
# -> list_a, list_b에 어떠한 변화도 없다 (비파괴적 처리)

''' extend() 함수 '''
list_a = [1, 2, 3]
list_b = [4, 5, 6]
list_a.extend(list_b)
print(list_a)  # [1, 2, 3, 4, 5, 6]
# -> 앞에 입력했던 list_a 자체에 직접적인 변화가 있다 (파괴적 처리)
print(list_b)  # [4, 5, 6]

 

   💡  헷갈리면 위의 예시처럼 직접 하나하나 입력해서 원본에 변화가 있는지 없는지 확인 

 


 

2. 리스트 요소 제거

 

1) 인덱스로 제거:  del 키워드, pop()

 

👾  요소의 위치를 기반으로 요소를 제거

# 1) del 키워드
del 리스트명[인덱스]
del 리스트명[시작_인덱스:종료_인덱스:증감값] # 범위 지정해 한꺼번에 제거, 종료 인덱스는 포함 x
# 2) pop()
리스트명.pop(인덱스)

 

# del 키워드로 제거
my_list = ['apple', 'banana']
del my_list[0]
print(my_list) # 결과 : ['banana']

# pop()으로 제거 
# 리스트의 마지막 요소가 반환되면서 삭제
my_list = ['apple', 'banana']
item = my_list.pop()
print(item)  # 결과 : banana
print(my_list)  # 결과 : ['apple']

# 인덱스 값을 인수로 전달하면 해당 인덱스 값이 삭제
my_list = ['apple', 'banana']
item = my_list.pop(0)
print(item)  # 결과 : apple
print(my_list)  # 결과 : ['banana']

 


 

2) 값으로 제거 :  remove()

 

👾  값을 지정해서 제거하는 함수

리스트.remove(값)

 

# 인수로 전달된 값과 동일한 요소를 찾아서 제거. 동일한 요소가 여러 개인 경우에는 첫 번째 요소가 제거
my_list = ['apple', 'banana', 'cherry', 'mango']
my_list.remove('cherry')
print(my_list)  # ['apple', 'banana', 'mango']

# 중복된 값이 있는 경우 제일 앞에 있는 것만 삭제
my_list = ['apple', 'banana', 'cherry', 'mango', 'cherry']
my_list.remove('cherry')
print(my_list)  # ['apple', 'banana', 'mango', 'cherry']

# 특정 값을 전부 삭제를 원할 경우 반복문 사용.
my_list = ['apple', 'banana', 'cherry', 'mango', 'cherry']
for idx in range(my_list.count('cherry')):
    my_list.remove('cherry')
print(my_list)  # ['apple', 'banana', 'mango']

 


 

3) 모두 제거: clear()

 

👾 리스트 내부의 요소를 모두 제거

리스트.clear()
my_list = ['apple', 'banana']
my_list.clear()
print(my_list)  # []

my_list = ['apple', 'banana']
my_list = []
print(my_list)  # []

 

 

 

 

 

 

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


 

1.  메소드 method

 

🐰  메소드 method란 특정 객체 object가 가지고 있는 함수 function을 의미
🐰  함수는 독립적으로 호출할 수 있지만, 메소드는 특정 객체를 통해서만 호출할 수 있음

함수()
객체.메소드() : 점(.) 연산자 사용
객체 -> 메소드() php, c

 


 

1)  count()

👩🏻‍🚀  문자열 내부에 포함된 특정 문자열의 개수를 반환하는 메소드

s = '내가 그린 기린 그림은 목 긴 기린 그림이고, 네가 그린 기린 그림은 목 짧은 기린 그림이다.'
print(s.count('기린'))  # 4

# 인덱스를 지정해서 범위를 지정할 수 있음
s = 'best of best'
print(s.count('best',5))  # 1 / 인덱스 5번 부터 검색

# 마이너스 인덱스를 사용할 수 있음
s = 'best of best'
print(s.count('best', -7))  # 1 / o부터 검색

 

 


2) find()

👩🏻‍🚀  문자열 내부에 포함된 특정 문자열을 찾고자 할 때 사용
👩🏻‍🚀  찾고자 하는 문자열이 있으면 그 문자열이 처음으로 나온 위치 즉 인덱스 index를 반환

 

 🐰  find() : 왼쪽부터 찾아서 처음 등장하는 위치를 찾는다

 🐰  rfind() : 오른쪽부터 찾아서 처음 등장하는 위치를 찾는다

 

s = 'apple'
print(s.find('p'))  # 1

# 찾는 문자열이 없는 경우 -1 반환
s = 'apple'
print(s.find('z'))  # -1

if s.find('z') == -1:
    print(s)

# 인덱스를 이용해서 검색할 범위를 지정 가능
# 시작할 인덱스를 지정하지 않는 경우에는 문자열의 처음부터 찾고, 시작할 인덱스를 지정하는 경우 지정된 인덱스부터 찾음
s = 'best of best'
print(s.find('best'))  # 0
print(s.find('best',5))  # 8


# find() 메소드와 찾는 방향이 다른 rfind() 메소드
# right와 find를 합친 이름으로 오른쪽부터 찾음
s = 'best of best'
print(s.find('best'))  # 8

 

  📌  문자열은 0번째 부터 시작, 결과는 해당 글자가 위치한 인덱스를 찾아 리턴함

  📌  찾는 문자열이 없는 경우  -1 반환

 


 

3) index()

👩🏻‍🚀  find() 메소드와 같은 역할을 수행하며 사용방법도 동일. 두 메소드의 차이점은 문자열이 없을 때 발생
👩🏻‍🚀  find() 메소드는 찾는 문자열이 없는 경우 -1을 반환, index() 메소드는 오류 발생

s = 'apple'
print(s.index('p'))  # 1
print(s.index('z'))  # ValueError : substring not found

 


 

4) upper() / lower() / capitalize()

 

 👩🏻‍🚀  upper : 모두 대문자로 변환한 결과를 반환
 👩🏻‍🚀  lower : 모두 소문자로 변환한 결과를 반환
 👩🏻‍🚀  capitalize : 첫 글자는 대문자로 변환하고 나머지는 소문자로 변환한 결과를 반환

 

s = 'Best of best'
print(s.upper())  # BEST OF BEST
print(s.lower())  # best of best
print(s.capitalize())  # Best of best

 


 

5)  join()

 

👩🏻‍🚀  인수로 전달한 반복가능객체(문자열, 리스트 등)의 각 요소 사이에 문자열을 포함시켜 새로운 문자열을 만들고 그 결과를 반환

문자열.join(문자열로 구성된 리스트)
print('-'.join('python'))  # p-y-t-h-o-n

print('+'.join(['a', 'b', 'c', 'd', 'e']))  # a+b+c+d+e

# 포함하는 문자 없이 단순하게 리스트의 요소들을 연결하고자 한다면 빈 문자열 사용
print(' '.join(['x', 'y', 'z']))  # x y z
a = {'a': 'apple', 'b': 'banana'}
print(''.join(a))  # ab / 딕셔너리의 경우 key를 연결

 

 


 

6) split()

 

👩🏻‍🚀  문자열을 '특정한 문자'로 자를 때 사용하는 함수  

s = 'Life is too short'
s2 = s.split()  # split() 메소드에 아무 인수도 전달하지 않으면 공백문자를 기준으로 각 문자열이 분리
print(s2)  # ['Life', 'is', 'too', 'short']

s = '010-1234-5678'
s2 = s.split('-')  # 공백대신 특정 문자열을 기준으로 분리하는 방법
print(s2)  # ['010', '1234', '5678']

 


 

7)  replace()

 

👩🏻‍🚀  문자열의 일부 문자열을 다른 문자열로 바꾼 결과를 반환

s = 'Life is too short'
s2 = s.replace('short', 'long')
print(s2)  # Life is too long

# 특정 문자열을 제거하기 위한 용도로 사용
s = '010-1234-5678'
s2 = s.replace('-', '')
print(s2)  #01012345678

 


 

8)  strip()

 

 strip()    문자열 양옆의 공백을 제거
 lstrip()  문자열 왼쪽의 공백을 제거
 rstrip()  문자열 오른쪽의 공백을 제거

 

s = '     apple'
print(len(s))  # 10

s2 = s.lstrip()
print(s2)  # apple
print(len(s2))  # 5

 

 

 

 

 

 

[ 내용 참고 : 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 학원 강의 자료 ]

+ Recent posts