Welcome! Everything is fine.

[혼공단 2주차] 혼자공부하는파이썬 Chapter 02-3 ~ 03 본문

자격증 및 기타 활동/한빛미디어 혼공단

[혼공단 2주차] 혼자공부하는파이썬 Chapter 02-3 ~ 03

개발곰발 2021. 7. 18.
728x90

💡 용어 정리

복합 대입 연산자 : 기존의 연산자와 조합하여 사용하는 연산자.  ex) +=, -=, *=, /=, %=, **= 

프롬프트 문자열 : input 함수 괄호에 입력한 내용.

블록 : 프로그램이 실행 도중에 잠시 대기하는 것.

캐스트 : 문자열을 숫자로 바꾸는 것과 같이 데이터 타입을 바꾸는 것. int( ), float( ) 혹은 str( )함수를 통해 바꿀 수 있음.

스왑 : 변수를 교체하는 것.

비파괴적 함수 : upper( ) 혹은  lower( ) 함수처럼 원본을 변화시키지 않는 함수.

조건 분기 : 조건을 기반으로 실행의 흐름을 변경하는 것.

💡 문자열 관련 다양한 함수

📃 format( )

파이썬의 문자열 포매팅 방법에는 % 연산자, fomat( ) 함수 혹은 f-string을 이용하는 방법이 있다. 아래는 format( ) 함수를 통해 숫자를 문자열로 변환하는 코드다.

a = "{}".format(10)

주의할 점은 중괄호의 개수와 format 함수 괄호 안 매개변수의 개수는 반드시 같아야 한다는 점이다.

 a = "{} {} {} {}".format(1000, 2000, 3000, 4000)
 b = "{} {} {}".format(1, "문자열", True)
# 확인문제 3번
a = input("> 1번째 숫자: ")
b = input("> 2번째 숫자: ")
print()

print("{} + {} = {}".format(a, b, a+b))

format( ) 함수를 이용하여 아래와 같이 정수를 특정 칸에 출력 하거나 빈칸을 0으로 채울 수도 있다. 또는 특정 기호를 붙여 출력 할 수 있다. 기호와 공백을 조합 할 때는 = 기호를  앞에 붙여 기호를 빈칸 앞에 붙일 것인지, 숫자 앞에 붙일 것인지 지정하는 기호이다.

# 특정 칸 띄우고 출력
a = "{:5d}".format(10)
b = "{:10d}".format(10)

# 빈칸을 0으로 채워서 출력
c = "{:05d}".format(10)
d = "{:05d}".format(-10)

# 기호 붙여서 출력
e = "{:+5d}".format(10)
f = "{:=+5d}".format(10) # +  10
g = "{:+05d}".format(10) # +0010

float 자료형을 출력 할 수도 있는데, float 자료형 출력을 지정하기 위해서는 {:f} 를 사용한다. 또한 소수점 아래 자릿수를 지정하는 기능도 있다. '.' 을 입력하고 몇 번째 자릿수까지 표시할지 지정하면 된다.

# 부동 소수점
a = "{:f}".format(52.234)
b = "{:10f}".format(52.234) # 10칸 만들기
c = "{:+10f}".format(52.234) # 10칸에 부호 추가하기
d = "{:+010f}".format(52.234) # 10칸에 부호 추가하고 0으로 채우기

# 소수점 아래 자릿수 지정
e = "{:10.3f}".format(52.234) # 10칸 만들고 소수점 3자리까지 출력

의미없는 소수점을 제거해야 할 때는 {:g}를 사용한다.

a = "{:g}".format(52.0)

📃 upper( ) / lower( )

upper( ) 함수는 문자열의 알파벳을 대문자로, lower( ) 함수는 문자열의 알파벳을 소문자로 만든다. 단, 이 함수를 사용한다고 해서 원본 문자열이 바뀌는 것은 아니다.

  a = "Hello Python!"
  a.upper() # HELLO PYTHON!
  a.lower() # hello python!

📃 strip( )

strip( ) 함수는 문자열 양 옆의 공백을 제거한다. 왼쪽의 공백을 제거하고 싶을 땐 lstrip( ), 오른쪽의 공백을 제거하고 싶을 땐 rstrip( ) 함수를 사용하지만 거의 쓰이지 않는다. 이때 공백이란 '띄어쓰기', '탭', '줄바꿈'을 모두 포함한다.

a = """ 
	안녕하세요
 문자열 함수를 알아봅니다
"""
print(a.strip())

📃 isOO( )

문자열이 어떻게 구성되어있는지 확인 할 때는 is 로 시작하는 이름의 함수를 사용한다. 결과값은 True 혹은 False로 나온다. 그 중 책에 나온 몇 가지 예시는 아래와 같다.

    ◾ isalnum : 문자열이 알파벳 또는 숫자로만 구성되어 있는지 확인함.

    ◾ isalpha : 문자열이 알파벳으로만 구성되어 있는지 확인함.

    ◾ isdentifier : 문자열이 식별자로 사용할 수있는지 확인함.

    ◾ isdecimal : 문자열이 정수 형태인지 확인함.

    ◾ isdigit : 문자열이 숫자로 인식될 수 있는 것인지 확인함.

    ◾ isspace : 문자열이 공백으로만 구성되어 있는지 확인함.

    ◾ islower : 문자열이 소문자로만 구성되어 있는지 확인함.

    ◾ isupper : 문자열이 대문자로만 구성되어 있는지 확인함.

📃 find( )

find( ) 함수는 문자열 내부에 특정 문자가 어디에 위치하는지 확인 할 때 사용한다. find( ) 함수는 왼쪽부터 찾고, rfind( ) 함수는 오른쪽부터 찾는다.

 a = "안녕안녕하세요".find("안녕") # 0
 b = "안녕안녕하세요".rfind("안녕") # 2

📃 in 연산자

in 연산자는 문자열 내부에 어떤 문자열이 있는지 확인할 때 사용한다. 결과값은 True 혹은 False로 나온다.

print("안녕" in "안녕하세요") # True
print("잘자" in "안녕하세요") # False

📃 split( )

split( ) 함수는 문자열을 특정한 문자로 자를 때 사용한다. 결과값은 리스트로 나온다. 아래 예제에서는 괄호 안의 공백을 기준으로 자른 것이다.

a = "10 20 30 40 50".split(" ") # ['10', '20', '30', '40', '50']

💡 불 자료형과 if 조건문

📃 불 자료형

불(Boolean)은 참(True)과 거짓(False)를 나타내는 값을 가지는 기본적인 자료형이다. 불은 비교연산자를 통해 만들 수 있으며, 불끼리는 논리연산자를 사용할 수 있다. 논리 연산자에는 not, and, or 세 개의 연산자가 있다. not은 참과 거짓을 반대로 바꿀 때 사용한다. and는  양쪽 변의 값이 모두 참일때만 True를 반환한다. or는 둘 중 하나만 참이어도 True를 반환한다.

📃 if 조건문

if 문은 조건에 따라 코드를 실행하거나 실행하지 않게 할 때 사용하는 구문이다.  if 문의 기본적인 구조는 아래와 같다.

if True: # 불 값이 나오는 표현식
	print("True입니다.") # 불 값이 참일때 실행할 문장

아래는 if 문 확인문제 4번이다. 

a = int(input("> 1번째 숫자: "))
b = int(input("> 2번째 숫자: "))
print()

if a > b:
	print("처음 입력했던 {}가 {}보다 더 큽니다".format(a, b))
if a < b:
	print("처음 입력했던 {}가 {}보다 더 큽니다".format(b, a))

조건문이 오로지 두 가지로만 구분될 때는 if else 구문을 사용하여 조건 비교를 한 번만 하는 것이 더 효율적이다. 또한 세 개 이상의 조건을 연결해서 사용해야 할 때도 있는데, 그럴 때는 elif 구문을 사용하는 것이 좋다.

# if else 구문으로 짝수와 홀수 구분하기
num = int(input("정수 입력> "))

if num % 2 == 0:
	print("짝수입니다")
else:
	print("홀수입니다")

📃 False로 변환되는 값

False로 변환되는 값은 None, 숫자 0과 0.0, 빈 컨테이너(빈 문자열, 빈 리스트, 빈 튜플, 빈 딕셔너리 등)이다.

# if 조건문에 0 넣기
if 0:
    print("0은 True로 변환됩니다.")
else:
    print("0은 False로 변환됩니다.")
print()

# if 조건문에 빈 문자열 넣기
if"":
    print("빈 문자열은 True로 변환됩니다.")
else:
    print("빈 문자열은 False로 변환됩니다.")

📃 pass / raise 키워드

프로그래밍의 전체 골격을 잡아놓고 만드는 경우, "아무것도 안함", "곧 개발하겠음"과 같은 의미로 pass키워드를 사용한다.

num = int(input("정수 입력 : "))

if num > 0:
    pass # 양수일 때: 아직 미구현 상태
else:
    pass # 음수일 때: 아직 미구현 상태

혹은 raise 키워드와 NotImplementedError를 조합해서 raise NotImplementedError를 사용하면 미구현 상태임을 표현하는 오류를 강제로 발생시킬 수 있다.

num = int(input("정수 입력 : "))

if num > 0:
    raise NotImplementedError # 양수일 때: 아직 미구현 상태
else:
    raise NotImplementedError # 음수일 때: 아직 미구현 상태

코드를 실행하면 정상적으로 진행되지만 구현되지 않은 부분에 들어서면 NotImplementedError라는 오류를 발생시킨다.

✅ 기본미션 수행 결과

# 사용자에게 태어난 연도를 입력받아 띠를 출력하는 프로그램(elif 구문 사용)

# 다음 주차에 배울 리스트와 반복문을 활용하여 더 간단하게 짠 코드

✅ 선택미션 수행 결과

 

[2주차] 선택미션 - else 구문과 elif 구문 정리

💡 else 구문 참/거짓일 때 실행되는 코드를 다르게 하려면 if~else 문을 사용한다. else 문은 조건이 없고, if 문 혹은 elif 문이 거짓이면 무조건 실행된다. 아래 코드는 if~else 문을 활용하여 입력한

3uomlkh.tistory.com