조건문 - if~else문
기본적으로 구조는 다른 언어의 if문과 같으나 {} 블록을 사용하지 않고 대신 들여쓰기를 사용한다. "if 조건: 조건인 참일 때 결과 else: 조건이 거짓일 때 결과"와 같은 형식으로 사용한다. 다중 조건문은 "if 조건: 조건인 참일 때의 결과 elif 조건: 첫 번째 조건이 아닐 때의 결과 else: 첫 번째 조건도 두 번째 조건도 거짓일 때의 결과"와 같은 형식으로 사용한다.
# if~else문
"""
기본 구조
if 조건문:
수행할 문장1
수행할 문장2
else:
수행할 문장A
수행할 문장B
"""
# 단순 if문
money = True
if money:
print("택시를")
print("타고")
print("가라")
# 비교 연산자: <, >, ==, !=, >=, <=
money = 2000
if money >= 3000:
print("잔액이 충분하니,")
print("택시를 타자.")
else:
print("잔액이 부족하니,")
print("걸어서 가자")
# and, or, not
# 조건: 돈이 3000원 이상 있거나 카드가 있으면 택시를 타고 아니면 걸어가라.
money = 2000
card = True
if money >= 3000 or card:
print("돈이 있거나, 카드가 있으니까,")
print("택시를 타고 가라.")
else:
print("아무것도 없으니,")
print("걸어가라.")
# x in s, x not in s 조건
# x in list x not in list -> x가 list 안에 있니? x가 list 안에 없니?
# x in tuple x not in tuple -> x가 튜플 안에 있니? x가 튜플 안에 없니?
# x in String x not in String -> x가 문자열 안에 있니? x가 문자열 안에 없니?
print(1 in [1, 2, 3])
print(1 not in [1, 2, 3])
print('a' in ('a', 'b', 'c'))
print('j' not in 'python')
pocket = ['card', 'cellphone', 'money']
if 'card' in pocket:
print("택시를 타고가라.")
else:
print("걸어가라.")
# 조건문에서 아무 일도 하지 않게 설정할 필요가 있을 때, pass 사용
pocket = ['check', 'money', 'cellphone']
if 'money' in pocket:
pass
else:
print("카드를 꺼내라.")
# 다중 조건 if - elif - else
# 주머니에 돈이 있으면 택시를 타고, 주머니에 돈이 없지만 카드가 있으면 택시를 타고,
# 돈도 카드도 없으면 걸어가라. if, else
pocket = ['money', 'cellphone']
card = True
if 'check' in pocket:
print("택시를 타고가라.")
else:
if card:
print("택시를 타고가라.")
else:
print("걸어가라.")
pocket = ['check', 'cellphone']
card = True
if 'money' in pocket:
print("현금이 있으니까.")
print("택시를 타고가자.")
elif card:
print("카드가 있으니까.")
print("택시를 타고가자.")
else:
print("둘 다 없으니,")
print("걸어가자.")
# 한 줄로 작성해도 문제 없음
pocket = ['pager', 'money', 'cellphone']
if 'money' in pocket:
pass
else:
print("카드를 꺼내라")
pocket = ['pager', 'money', 'cellphone']
if 'money' in pocket:
pass
else:
print("카드를 꺼내라")
# 조건부 표현식
score = 70
if score >= 60:
message = "success"
print(message)
else:
message = "failure"
print(message)
# 조건부 표현식
# 조건식이 참인 경우 if 조건문 else 조건문이 거짓을 경우
message = "success" if score >= 60 else "failure"
print(message)
반복문 - for문
for문 역시 다른 언어와 구조는 같고 {} 블록 대신 들여쓰기를 사용한다. range() 함수를 이용해서 반복 가능한 객체를 만들고 "for i in range(m, n): 반복할 내용"(i에 m부터 n까지의 정수를 순차적으로 대입한다.)과 같은 형식으로 사용한다.
# for문
"""
기본 구조
for 변수 in 리스트(또는 튜플, 문자열):
수행할 문장1
수행할 문장2
......
"""
# 전형적인 for문
test_list = ['one', 'two', 'three', 'four']
for i in test_list:
print(i)
# a 리스트의 요솟값이 튜플이기 때문에 각각의 요소가 자동으로 first, last 변수에 대입된다.
# (first, last) = (1,2)
a = [(1, 2), (3, 4), (5, 6)]
for (first, last) in a:
print(first + last)
# for문의 응용
# 5명의 학생이 시험을 봤는데, 시험 점수가 60점이 넘으면 합격, 그렇지 않으면 불합격인 결과를 보여주자.
score = [90, 25, 67, 45, 90]
number = 0 # 학생의 번호를 임의로 줌
for i in score:
number += 1
if i >= 60:
print("%d번 학생은 합격입니다." % number)
else:
print("%d번 학생은 불합격입니다." % number)
# for문과 continue
# 60점 이상의 학생에게 합격 메시지를 보내보자.
score = [90, 25, 67, 45, 90]
number = 0 # 학생의 번호를 임의로 줌
for i in score:
number += 1
if i < 60:
continue
print("%d번 학생 축하합니다. 합격하셨습니다." % number)
# for문과 함께 자주 사용하는 range() 함수
a = range(10) # 0부터 10미만의 숫자를 포함하는 range 객체를 만들어 준다.
a = range(1, 11) # range(시작 숫자, 끝 숫자) 형태, 시작 숫자 ~ 끝 숫자 - 1 까지 , 끝 숫자는 포함되지 않는다.
add = 0
for i in range(1, 11):
add += i
print(add)
score = [90, 25, 67, 45, 80]
for number in range(len(score)):
if score[number] < 60: continue
print("%d번 학생 축하합니다. 합격입니다." % (number + 1))
# for문과 range를 이용한 구구단을 찍어 보자.
# 단, 곱하는 수, 이중 for, range():
for i in range(2, 10): # 단 1번 for
for j in range(1, 10): # 곱하는 수 2번 for
print(i * j, end=" ") # end=" " 다음 줄로 넘어가지 않고 한 칸씩만 옆에 출력하게 하기 위해
print('') # 다음 줄로 넘어가계 하는 역할
# 리스트 내포(list comprehension) 사용하기: 리스트 안에 for문을 포함시키는 것
# [표현식 for 항목 in 반복 가능 객체 if 조건문]
# for문을 2개 이상 사용하는 것도 가능
# [표현식 for 항목1 in 반복 가능 객체1 if 조건문1
# for 항목2 in 반복 가능 객체2 if 조건문2
# .....
# for 항목n in 반복 가능 객체n if 조건문n]
a = [1, 2, 3, 4]
result = []
for num in a:
result.append(num * 3)
print(result)
a = [1, 2, 3, 4]
result = [num * 3 for num in a if num % 2 == 0] # 짝수 값만 result에 값을 대입하겠다.
print(result)
result = [x * y for x in range(2, 10) for y in range(1, 10)]
print(result)
반복문 - while문
while문도 구조는 다른 언어와 같다. {} 블록 대신 들여쓰기를 사용한다. "while 조건: 반복할 내용"과 같은 형식으로 사용한다.
# while문
"""
기본구조
while 조건문:
수행할 문장 1
수행할 문장 2
수행할 문장 3
......
"""
# "10번 찍어 안 넘어가는 나무 없다"를 while 반복으로 출력
treeHit = 0
while treeHit < 10:
treeHit = treeHit + 1
print("나무를 %d번 찍었습니다." % treeHit)
if treeHit == 10:
print("나무가 넘어갑니다.")
# while문 만들기
# 4를 입력할 때까지 반복, 4를 입력하면 거짓이 되어 while 반복문 탈출
prompt = """
1. Add
2. Del
3. List
4. Quit
Enter number: """
number = 0
while number != 4:
print(prompt)
number = int(input())
# while문 강제로 빠져 나오기: break
coffee = 10
money = 300
while money:
print("금액을 넣었으니 커피를 서비스합니다.")
coffee -= 1
print("남은 커피의 양은 %d개 입니다." % coffee)
if coffee == 0:
print("커피가 다 떨어졌습니다. 판매 중지")
break
# while문의 처음으로 돌아가기: continue 사용
# 홀수 출력하는 프로그램
a = 0
while a < 10:
a += 1
if a % 2 == 0: continue
print(a)
# 무한 루프
while True:
수행할 문장1
수행할 문장2
...
while True:
print("Ctrl+C를 눌러야 while문을 탈출할 수있습니다.")
switch~case문, do~while문은?
참고로, 파이썬에는 문법의 단순화를 위해 switch~case문이나 do~while문이 존재하지 않는다. 이들을 구현하려면 각각 if~elif~else문과 while문을 변형하여 사용하여야 한다.
'🐍Python' 카테고리의 다른 글
[20210802] Python 기본 문법 6 - 라이브러리 2, 정규식, numpy (0) | 2021.08.02 |
---|---|
[20210730] Python 기본 문법 5 - 예외, 내장 함수, 라이브러리 (0) | 2021.07.30 |
[20210729] Python 기본 문법 4 - 클래스, 모듈, 패키지 (0) | 2021.07.29 |
[20210728] Python 기본 문법 3 - 함수, 사용자 입력, 파일 (0) | 2021.07.28 |
[20210726] Python 기본 문법 1 - 연산, 변수, 자료형(숫자, 문자 , 리스트, 튜플, 집합, 딕셔너리) (0) | 2021.07.26 |