본문 바로가기

Language/python

혼공학습단 8기 파이썬 2주차

혼공학습단 8기 파이썬 2주차 

 

파이썬의 유연성

C/C++, 자바, C# 등은 기본적으로 변수를 사용할 때 변수의 자료형에 대해 미리 선언해주어야 한다.

그러나 파이썬은 변수에 자료형을 지정하지 않는다.

즉, 같은 변수에 여러 자료형을 넣을 수 있다.

 

유연함이 좋을 수도 있지만 이러한 유연성 때문에 변수에 어떤 자료형이 있는지 모를 수 있다. 

이로인해 TypeError를 발생시킬 수도 있는 것.

그러므로 하나의 변수에는 하나의 자료형을 넣어서 사용하자.

 

 

input() 입력함수

input() 함수의 반환형은 문자열 자료형이다. boolean 값도 모두 문자열 형태로 나온다.

그럼 입력한 숫자를 연산에 활용하기 위해서는 어떻게 해야 할까?

바로 캐스트, 변환 함수를 이용하면 된다.

- int(): 문자열을 int형으로

- float(): 문자열을 floa형으로 (실수 or 부동 소수점)

- str(): 숫자를 문자열로

예제1
예제2
예제3

 

ValueError 예외

변환할 수 없는 것을 변환하려고 하면 해당 예외가 발생한다.

ⓐ 숫자가 아닌 것을 숫자로 변환하려고 할 때

ⓑ 소수점이 있는 숫자 형식의 문자열을 int() 함수로 변환하려 할 때

 

 

format()

말 그대로 형식에 관한 함수

string_a = "{}".format(10) 처럼 사용하며, {} 기호를 괄호 안에 있는 매개변수로 대체한다.

매개변수와 {} 기호의 개수는 같아야 함. 다르면 IndexError 예외가 발생할 수 있다.

예제1
예제2

 

format() 함수는 다양한 형태로 출력시킬 수 있다.

 

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

{:+d} 처럼 d 앞에 + 기호를 추가하면, 양수의 경우에는 + 기호, 음수는 - 기호를 출력한다.

그리고 {: d} 처럼 d 앞에 공백을 두면, 양수의 경우 기호의 위치를 공백으로 출력한다.

+/- 기호 앞에 공백을 추가한다.

+/- 기호 앞에 공백을 추가할 수도 있다.

+/- 기호 뒤에 공백을 추가하고 싶으면 =기호를 앞에 붙이면 된다.

0으로 채우기 버전이다. 기호 포함해서 앞에 5칸을 채워야 함. 빈칸 0으로 채우기

 

대충.. : 기호가 c/c++에서 %를 의미하는 것이라 보아도 될 듯 하다.

 

참고로 부동소수점인 float 형은 칸 지정 출력 시 별다른 표시 없으면 정수부분 8칸이다.

소수점 아래 자릿수를 지정하고 싶으면 다음과 같이 입력하면 된다.

추가실습
의미 없는 소수점 제거하기

 

 

 

upper() / lower()

대문자로/소문자로 만드는 함수이다.

그러나 이 함수들은 비파괴적 함수로서, 원본을 변화시키지 않는다.

단지 a를 대/소문자로 출력해서 보여줄 뿐 원본 a를 변경하지 않는다는 의미이다.

 

 

 

문자열 공백 제거

strip(): 문자열 양 옆 공백을 제거 .✔ 많이 사용

lstrip(): 문자열 왼쪽 공백 제거

rstrip(): 문자열 오른쪽 공백 제거

 

 

 

문자열 구성 파악: isOO()

- isalnum(): 문자열이 알파벳 or 숫자로만 구성되어 있는지?

- isalpha(): 문자열이 알파벳으로만 구성되어있는지?

- isidentifier(): 문자열이 식별자로 사용할 수 있는지?

- isdigit(): 문자열이 숫자로 인식될 수 있는지?

- isspace(): 문자열이 공백으로만 구성되어 있는지?

- isupper(): 문자열이 대문자로만 구성되어 있는지?

- islower(): 문자열이 소문자로만 구성되어 있는지?

반환값은 True / False이다.

 

 

문자열 찾기: find(), rfind(), in연산자

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

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

반환값은 int형 정수값이다.

 

in 연산자: 찾을 문자열 in 어디서 찾을 것인가?

반환값은 True/False

 

 

문자열 자르기 split()

문자열을 특정 문자로 자를 때 사용하는 함수이다. 

공백을 기준으로 자른다

리스트형으로 반환된다.

 

 

나머지 if문은 대강 알아서 생략한다.

 


 

혼공학습단 2주차 기본미션

137p 

03. 사용자에게 태어난 연도를 입력받아 띠를 출력하는 프로그램을 작성. 작성 시 입력받은 연도를 12로 나눈 나머지를 사용한다. 나머지가 0~11일 때 각각 << 신 유 술 해 자 축 인 묘 진 사 오 미 >>

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("양 띠")

결과

 

혼공학습단 2주차 추가미션

else 구문과 elif 구문 정리하기

if condition:
	# condition = true일 때 실행할 문장
else: 
	# condition = false일 때 실행할 문장

else문은 if 조건문 뒤에 사용하며, if문의 조건이 거짓일 때 실행되는 부분이다.

이 구문을 사용하면 조건 비교를 한번만 하게된다. 즉, 하나의 조건에 대해서 참 또는 거짓의 결과만 존재

 

그러나 elif 구문을 사용하면 여러 조건을 연결해서 사용할 수 있다.

if conditionA:
	# conditionA = true일 때 실행할 문장
elif  conditionB:
	# conditionB = true일 때 실행할 문장
elif conditionC:
	# conditionC = true일 때 실행할 문장
elif conditionD:
	# conditionD = true일 때 실행할 문장
else: 
	# 모든 condition들이 거짓일 때 실행할 문장

elif 구문은 if조건문과 else 구문 사이에 입력함으로 사용할 수 있다.

 

 

추가로, pass 키워드에 대해 알아보자.

프로그래밍 시 골격을 잡아놓고 내부 처리 기능은 나중에 만들겠다는 의도로 코딩하는 경우가 있다.

바로 위에 작성한 if else / if elif else 코드처럼.

그러나 주석만 써 두고 실행하면 IndentationError 예외가 발생한다. "들여쓰기가 잘못되어있다."라는 의미의 예외인데, 해당 부분에 어떤 내용이라도 넣어 주어야한다.

 

pass 키워드를 사용하여 적어두면, 이는 "ㄹㅇ로 아무것도 하지 않는다. 또는 곧 개발한다." 라는 의미이다.

if conditionA:
	# conditionA = true일 때 실행할 문장 (미구현)
    pass
elif  conditionB:
	# conditionB = true일 때 실행할 문장 (미구현)
    pass
else: 
	# 모든 condition들이 거짓일 때 실행할 문장 (미구현)
    pass

 

pass 키워드 말고도 예외상황을 발생시키는 raise 키워드 + NotImplementedError를 조합하여 사용할 수도 있다.

str_input = input("태어난 해를 입력해 주세요. > ")
birth_year=int(str_input)

if(birth_year%12 == 7):
	print("토끼띠임")
else:
	raise NotImplementedError

NotImplementedError는 아직 구현되지 않은 부분임을 나타내는 예외로, 

코드는 정상적으로 실행되나, 구현되지 않은 부분에 들어서면 NotImplementedError를 발생시킨다.