a = 7
b = 3
c = a + b
print(c)
# 풀이방법 1
a = round(3.1415, 2)
print(a)
# 풀이방법 2
a = 3.1415
b = "%0.2f" % a
print(b)
# 풀이방법 3
a = 3.1415
b = "{:.2f}".format(a)
print(b)
round(숫자, 소수점_자리수)
첫 번째 인자: 반올림할 숫자
두 번째 인자: 반올림할 소수점 자리수
# 풀이방법 1
a = "Hello, World!"
b = a[0:5]
print(b)
# 풀이방법 2
a = "Hello, World!"
b = a.split(',')[0] # ',' 기준으로 나눈 후 첫 번째 부분 가져오기
# b = a.partition(',')[0]) 위와 같음
print(b) # 출력: Hello
a = "python"
b = a.upper()
print(b)
a = [1,2,3,4,5]
a[0], a[-1] = a[-1], a[0] # 첫 번째와 마지막 원소 교환
print(a)
a = [5,2,7,1,9]
a.sort()
print(a)
a = ('apple','banana','cherry')
print(a[0])
a = 1,2,3
b = 4,5,6
print(a + b)
# 이거 'banana' key를 추출하는 건줄 알고 풀음..🐧
a = {'apple': 3, 'banana': 5, 'cherry': 2}
keys = list(a.keys())
print(keys[1])
#'banana' value 가져오는 풀이방법1
a = {'apple': 3, 'banana': 5, 'cherry': 2}
print(['banana'])
# 풀이방법 2
a = {'apple': 3, 'banana': 5, 'cherry': 2}
print(a.get('banana'))
a = {'apple': 3, 'banana': 5, 'cherry': 2}
a['orange'] = 4
print(a)
# 풀이방법 1
a = {1,2,3}
b = {2,3,4}
print(a & b)
# 풀이방법 2
a = {1,2,3}
b = {2,3,4}
print(a.intersection(b))
a = True
b = False
c = a and b
print(c)
if,while,for 등의 제어문에 대해 알아보자.
>>> money = True
>>> if money:
... print("택시를 타고 가라")
... else:
... print("걸어 가라")
...
택시를 타고 가라
다음은 if와 else를 사용한 조건문의 기본 구조이다.
if 조건문: 수행할_문장1 수행할_문장2 ... else: 수행할_문장A 수행할_문장B ...
- 조건문을 테스트해서 참이면 if문 바로 다음 문장(if 블록)들을 수행하고 조건문이 거짓이면 else문 다음 문장(else 블록)들을 수행하게 된다.
- 따라서 else 문은 if 문 없이 독립적으로 사용할 수 없다.
if 문을 만들 때는 if 조건문: 바로 다음 문장부터 if 문에 속하는 모든 문장에 들여쓰기(indentation)를 해야 한다.
- 다음 예를 보면 조건문이 참일 경우 ‘수행할문장1’을 들여쓰기했고 ‘수행할문장2’와 ‘수행할문장3’도 들여쓰기했다.
※ 다른 프로그래밍 언어를 사용해 온 사람들은 파이썬에서 ‘수행할문장’을 들여쓰기하는 것을 무시하는 경우가 많으므로 더 주의해야 한다.if 조건문: 수행할_문장1 수행할_문장2 수행할_문장3
↑↑↑ 들여쓰기한 문장
- 다음처럼 작성하면 오류가 발생한다. ‘수행할_문장2’를 들여쓰기하지 않았기 때문이다.
if 조건문: 수행할_문장1 수행할_문장2 수행할_문장3
- IDLE 에디터에서 다음과 같이 작성하여 실행해 보자.
- 여기서는 오류가 발생하는지 확인만 하면 되므로 IDLE 에디터 창에 코드를 작성하고 [F5]를 눌러 바로 실행하자.
# indent_error.py money = True if money: print("택시를") print("타고") print("가라")
들여쓰기 오류가 발생하는 것을 확인할 수 있다.
- 다음과 같은 경우에도 오류가 발생한다.
- '수행할문장3'을 들여쓰기했지만, '수행할문장1'이나 '수행할_문장2'와 들여쓰기의 깊이가 다르다.
- 즉, 들여쓰기는 언제나 같은 깊이로 해야한다.
if 조건문: 수행할_문장1 수행할_문장2 수행할_문장3
그렇다면 들여쓰기는 공백 문자([Spacebar])로 하는 것이 좋을까, 탭 문자([Tab])로 하는 것이 좋을까?
이에 대한 논란은 파이썬을 사용하는 사람들 사이에서 아직도 계속되고 있다.
공백 문자로 하자는 쪽과 탭 문자로 하자는 쪽 모두가 동의하는 내용은 2가지를 혼용해서 쓰지 말자는 것이다.
공백 문자로 할 것이라면 공백으로 통일하고, 탭 문자로 할 것이라면 탭으로 통일하자는 말이다. 탭이나 공백은 프로그램 소스에서 눈으로 보이는 것이 아니기 때문에 혼용해서 쓰면 오류의 원인이 되므로 주의하자.요즘 파이썬 커뮤니티에서는 들여쓰기를 할 때 공백 문자 4개를 사용하는 것을 권장한다.
또한 파이썬 에디터는 대부분 탭 문자로 들여쓰기를 하더라도 탭 문자를 공백 문자 4개로 자동 변환하는 기능을 갖추고 있다.
if 조건문 뒤에는 반드시 콜론(:)이 붙는다.
어떤 특별한 의미가 있다기보다는 파이썬 문법 구조이다.
왜 하필 콜론(:)인지 궁금하다면 파이썬을 만든 귀도에게 직접 물어봐야 할 것이다.
앞으로 배울 while이나 for,def,class도 역시 문장의 끝에 콜론(:)이 항상 들어간다.파이썬이 다른 언어보다 보기 쉽고 소스 코드가 간결한 이유는 바로 콜론(:)을 사용하여 들여쓰기를 하도록 만들었기 떄문이다.
하지만 이는 숙련된 프로그래머들이 파이썬을 처음 접할 때 제일 혼란스러워하는 부분이기도 하다.
다른 언어에서는 if문에 속한 문장들을 {}로 감싸지만, 파이썬에서는 들여쓰기로 해결한다는 점을 기억하자.
if 조건문에서 '조건문'이란 참과 거짓을 판단하는 문장을 말한다.
앞에서 살펴본 택시 예제에서 조건문은 money가 된다.
>> money = True >> if money:
- money는 True이기 때문에 조건이 참이 되어 if 문 다음 문장을 수행한다.
이번에는 조건문에 비교 연산자(<, >, ==, !=, >=, <=)를 쓰는 방법에 대해 알아보자.
다음 표는 비교 연산자를 잘 설명해 준다.
비교연산자 설명 x < y x가 y보다 작다. x > y x가 y보다 크다. x == y x와 y가 같다. x != y x와 y가 같지 않다. x >= y x가 y보다 크거나 같다. x <= y x가 y보다 작거나 같다.
- 이제 이 연산자를 어떻게 사용하는지 알아보자.
>> x = 3 >> y = 2 >> x > y True >>
- x에 3, y에 2를 대입한 후 x > y라는 조건문을 수행하면 True를 리턴한다.
- x > y 조건문이 참이기 때문이다.
>> x < y False
- 위 조건문은 거짓이기 때문에 False를 리턴한다.
>> x == y False
- x와 y는 같지 않다. 따라서 위 조건문은 거짓이므로 False를 리턴한다.
>> x != y True
- x와 y는 같지 않다. 따라서 위 조건문은 참이므로 True를 리턴한다.
사용법을 알아봤으므로 이제 응용해 보자. 앞에서 살펴본 택시 예제를 다음처럼 바꾸려면 어떻게 해야 할까?
만약 3000원 이상의 돈을 가지고 있으면 택시를 타고 가고, 그렇지 않으면 걸어가라.
- 이 상황은 다음처럼 프로그래밍할 수 있다.
money = 2000 if money >= 3000: ... print("택시를 타고 가라") ... else: ... print("걸어가라") ... 걸어가라
money >= 3000 조건문이 거짓이 되기 때문에 else 문 다음 문장을 수행하게 된다.
조건을 판단하기 위해 사용하는 다른 연산자로는 and,or,not이 있다.
- 각각의 연산자는 다음처럼 동작한다.
연산자 설명 x or y x와 y 둘 중 하나만 참이어도 참이다. x and y x와 y 모두 참이어야 참이다. not x x가 거짓이면 참이다.
- 다음 예를 통해 or 연산자의 사용법을 알아보자!
돈이 3000원 이상 있거나 카드가 있다면 택시를 타고 가고, 그렇지 않으면 걸어가라.
>> money = 2000 >> card = True >> if money >= 3000 or card: ... print("택시를 타고 가라") ... else: ... print("걸어가라") ... 택시를 타고 가라 >>
- money는 2000이지만, card가 True이기 때문에 money >= 3000 or card 조건문이 참이 된다.
- 따라서 if 문에 속한 ‘택시를 타고 가라’ 문장이 출력된다.
파이썬은 다른 프로그래밍 언어에서 쉽게 볼 수 없는 재미있는 조건문도 제공한다.
- 바로 다음과 같은 것들이다.
in not in x in 리스트 x not in 리스트 x in 튜플 x not in 튜플 x in 문자열 x not in 문자열
- 영어 단어 in의 뜻이 '~안에'라는 것을 생각해 보면 다음 예가 쉽게 이해될 것이다.
>> 1 in [1, 2, 3] True >> 1 not in [1, 2, 3] False
- 앞에서 첫 번째 예는 ‘[1, 2, 3]이라는 리스트 안에 1이 있는가?’라는 조건문이다.
- 1은 [1, 2, 3] 안에 있으므로 참이 되어 True를 리턴한다.
- 두 번째 예는 ‘[1, 2, 3] 리스트 안에 1이 없는가?’라는 조건문이다.
- 1은 [1, 2, 3] 안에 있으므로 거짓이 되어 False를 리턴한다.
- 다음은 튜플과 문자열에 in과 not in을 적용한 예이다.
- 각각의 결과가 나온 이유는 쉽게 유추할 수 있다.
>> 'a' in ('a', 'b', 'c') True >> 'j' not in 'python' True
- 이번에는 우리가 계속 사용해 온 택시 예제에 in을 적용해 보자.
만약 주머니에 돈이 있으면 택시를 타고 가고, 없으면 걸어가라.
>> pocket = ['paper', 'cellphone', 'money'] >> if 'money' in pocket: ... print("택시를 타고 가라") ... else: ... print("걸어가라") ... 택시를 타고 가라 >>
- ['paper', 'cellphone', 'money'] 리스트 안에 'money'가 있으므로 'money' in pocket은 참이 된다.
- 따라서 if 문에 속한 문장이 수행된다.
가끔 조건문의 참, 거지에 따라 실행할 행동을 정의할 때나 아무런 일도 하지 않도록 설정하고 싶을 때가 있다.
- 다음 예를 살펴 보자.
주머니에 돈이 있으면 가만히 있고, 주머니에 돈이 없으면 카드를 꺼내라.
- 이럴 때 사용하는 것이 바로 pass이다.
- 위 예를 pass를 적용해서 구현해 보자.
>> pocket = ['paper', 'money', 'cellphone'] >> if 'money' in pocket: ... pass ... else: ... print("카드를 꺼내라") ...
- pocket 리스트 안에 money 문자열이 있기 때문에 if 문 다음 문장인 pass가 수행되고 아무런 결괏값도 보여 주지 않는다.
if와 else만으로는 다양한 조건을 판단하기 어렵다.
- 다음 예를 보더라도 if와 else만으로는 조건을 판단하는 데 어려움을 겪게 된다는 것을 알 수 있다.
주머니에 돈이 있으면 택시를 타고 가고, 주머니에 돈은 없지만 카드가 있으면 택시를 타고, 돈도 없고 카드도 없으면 걸어가라.
- 위 문장을 보면 조건을 판단하느 부분이 두 군데 있다.
- 먼저 주머니에 돈이 있는지를 판단해야 하고 주머니에 돈이 없으면 다시 카드가 있는지 판단해야 한다.
- if와 else만으로 위 문장을 표현하려면 다음과 같이 할 수 있다.
>> pocket = ['paper', 'cellphone'] >> card = True >> if 'money' in pocket: ... print("택시를 타고가라") ... else: ... if card: ... print("택시를 타고가라") ... else: ... print("걸어가라") ... 택시를 타고가라 >>
- 언뜻 보기에도 이해하기 어렵고 산만한 느낌이 든다.
- 이런 복잡함을 해결하기 위해 파이썬에서는 다중 조건 판단을 가능하게 하는 elif를 사용한다.
- 위 예에 elif를 사용하면 다음과 같이 바꿀 수 있다.
>> pocket = ['paper', 'cellphone'] >> card = True >> if 'money' in pocket: ... print("택시를 타고가라") ... elif card: ... print("택시를 타고가라") ... else: ... print("걸어가라") ... 택시를 타고가라
- 즉, elif는 이전 조건문이 거짓일 때 수행된다.
- if, elif, else를 모두 사용할 때 기본 구조는 다음과 같다.
if 조건문: 수행할_문장1 수행할_문장2 ... elif 조건문: 수행할_문장1 수행할_문장2 ... elif 조건문: 수행할_문장1 수행할_문장2 ... ... else: 수행할_문장1 수행할_문장2 ...
- 위에서 볼 수 있듯이 elif는 개수에 제한 없이 사용할 수 있다.
앞의 pass를 사용한 예를 들어 보면 if 문 다음에 수행할 문장이 한 줄이고 else 문 다음에 수행할 문장도 한 줄밖에 되지 않는다.
>> if 'money' in pocket: ... pass ... else: ... print("카드를 꺼내라") ...
- 이렇게 수행할 문장이 한 줄일 때 좀 더 간략하게 코드를 작성하는 방법이 있다.
>> pocket = ['paper', 'money', 'cellphone'] >> if 'money' in pocket: pass ... else: print("카드를 꺼내라") ...
- if 문 다음에 수행할 문장을 콜론(:) 뒤에 바로 적었다.
- else 문 역시 마찬가지이다.
다음 코드를 살펴보자.
score가 60 이상일 경우 message에 문자열 "success", 아닐 경우에는 문자열 "failure"를 대입하는 코드이다.if score >= 60: message = "success" else: message = "failure"
- 파이썬의 조건부 표현식(conditional expression)을 사용하면 위 코드를 다음과 같이 간단히 표현할 수 있다.
message = "success" if score >= 60 else "failure"
- 조건부 표현식은 다음과 같이 정의한다.
변수 = 조건문이_참인_경우의_값 if 조건문 else 조건문이_거짓인_경우의_값
- 조건부 표현식은 가독성에 유리하고 한 줄로 작성할 수 있어 활용성이 좋다.