03장 프로그램의 구조를 쌓는다! 제어문
__03-1 if 문
____if 문은 왜 필요할까?
#"돈이 있으면 택시를 타고, 돈이 없으면 걸어 간다."
>>> money = True
>>>if money:
... print("택시를 타고 가라")
...else:
... print("걸어 가라")
택시를 타고 가라
____if 문의 기본 구조 : 들여쓰기
if 조건문:
수행할 문장1(명령문1)
수행할 문장2
...
else:
수행할 문장A
수행할 문장B
...
____조건문이란 무엇인가? :: 참과 거짓을 판단하는 문장
>>>money = True #조건문 : money : 참과 거짓을 판단하는 문장
>>>if money:
# 비교 연산자 사용하기
x = 3
y = 2
# x > y
print(x > y) # x가 y보다 크다면 True를 출력
# x < y
print(x < y) # x가 y보다 작다면 True를 출력
# x == y
print(x == y) # x와 y가 같다면 True를 출력
# x != y
print(x != y) # x와 y가 다르다면 True를 출력
# 조건문 예제: 돈에 따라 택시를 타거나 걸어가기
money = 2000 # 돈이 2000원인 상황
if money >= 3000: # 만약 돈이 3000원 이상이면
print("택시를 타고 가라") # 택시를 타고 가라 출력
else: # 그렇지 않으면
print("걸어가라") # 걸어가라 출력
# 출력: 걸어가라
- and, or, not
연산자 설명 x or y x와 y 둘중에 하나만 참이어도 참이다 x and y x와 y 모두 참이어야 참이다 not x x가 거짓이면 참이다
>>> money = 2000
>>> card = True
>>>if money >= 3000 or card: #False or True
... print("택시를 타고 가라")
...else:
... print("걸어가라")
...
택시를 타고 가라
- in, not in
in not in x in 리스트 x not in 리스트 x in 튜플 x not in 튜플 x in 문자열 x not in 문자열 >>> 1 in [1, 2, 3] True >>> 1 not in [1, 2, 3] False >>> 'a' in ('a', 'b', 'c') True >>> 'j' not in 'python' True >>> pocket = ['paper', 'cellphone', 'money'] >>>if 'money' in pocket: # 위 리스트 안에 'money'가 있으므로 참 ... print("택시를 타고 가라") ...else: ... print("걸어가라") 택시를 타고 가라
#**조건문에서 아무 일도 하지 않게 설정하고 싶다면? - pass**
>>> pocket = ['paper', 'money', 'cellphone']
>>> if 'money' in pocket:
... pass
... else:
... print("카드를 꺼내라")
#아무 결괏값도 보여 주지 않는다.
____다양한 조건을 판단하는 elif
if <조건문>:
<수행할 문장1>
<수행할 문장2>
...
elif <조건문>:
<수행할 문장1>
<수행할 문장2>
...
elif <조건문>:
<수행할 문장1>
<수행할 문장2>
...
...
else:
<수행할 문장1>
<수행할 문장2>
...
#비효율적
>>> pocket = ['paper', 'handphone']
>>> card = True
>>> if 'money' in pocket:
... print("택시를 타고가라")
... else:
... if card:
... print("택시를 타고가라")
... else:
... print("걸어가라")
...
택시를 타고가라
#elif 사용
>>> pocket = ['paper', 'cellphone']
>>> card = True
>>> if 'money' in pocket:
... print("택시를 타고가라")
... elif card:
... print("택시를 타고가라")
... else:
... print("걸어가라")
...
택시를 타고가라
____조건부 표현식
변수 = 조건문이_참인_경우의_값 if 조건문 else 조건문이_거짓인_경우의_값
if score >= 60:
message = "success"
else:
message = "failure"
message = "success" if score >= 60 else "failure"
__03-2 while 문
___while 문의 기본 구조
while <조건문>:
<수행할 문장1>
<수행할 문장2>
<수행할 문장3>
...
treeHit = 0 # 나무를 찍은 횟수(를 나타내는 변수 초기화)
while treeHit < 5: # 나무를 5번 미만으로 찍었을 때 반복
treeHit = treeHit + 1 # 나무를 한 번 찍을 때마다 treeHit 값 1 증가
print("나무를 %d번 찍었습니다." % treeHit) # 나무를 찍은 횟수 출력
if treeHit == 5: # 나무를 5번 찍었을 때
print("나무 넘어갑니다.") # 해당 메시지 출력
# 나무를 찍는 동안 treeHit이 5보다 작을 때까지 반복, 나무 넘어가는 메시지 출력 후 반복문 종료
...
나무를 1번 찍었습니다.
나무를 2번 찍었습니다.
나무를 3번 찍었습니다.
나무를 4번 찍었습니다.
나무를 5번 찍었습니다.
나무 넘어갑니다.
# 여러 선택지를 포함한 prompt 문자열을 생성
prompt = """
1. Add
2. Del
3. List
4. Quit
Enter number: """
number = 0 # 초기 number 변수를 0으로 설정
while number != 4: # number가 4가 아닌 동안 반복
print(prompt) # prompt 문자열 출력
number = int(input()) # 사용자로부터 숫자를 입력받아 number에 할당
# 사용자가 4를 입력하기 전까지 prompt를 반복해서 출력하며 사용자 입력을 받음
# 4가 입력되면 while문을 빠져나가게 됨
____while 문 강제로 빠져나가기 - break
#자판기로 break 예시
>>> coffee = 10
>>> money = 300
>>> while money: #조건문인 money는 0이 아니기 때문에 항상 True
... print("돈을 받았으니 커피를 줍니다.")
... coffee = coffee -1 #while문 내용 한 번 수행할 때마다 1개씩 줄어듦
... print("남은 커피의 양은 %d개입니다." % coffee)
... if coffee == 0:
... print("커피가 다 떨어졌습니다. 판매를 중지합니다.")
... **break**
...
#실제 자판기라면? 예시
coffee = 5 # 커피의 초기 재고를 5로 설정
while True: # 무한 루프 시작
money = int(input("돈을 넣어 주세요: ")) # 사용자로부터 돈을 입력받음
# 입력받은 돈에 따라 커피를 판매하고 남은 재고를 출력
if money == 300:
print("커피를 줍니다.")
coffee -= 1
elif money > 300:
print("거스름돈 %d를 주고 커피를 줍니다." % (money - 300))
coffee -= 1
else:
print("돈을 다시 돌려주고 커피를 주지 않습니다.")
print("남은 커피의 양은 %d개 입니다." % coffee)
# 만약 커피가 다 떨어졌다면 판매 중지를 알리고 루프를 종료
if coffee == 0:
print("커피가 다 떨어졌습니다. 판매를 중지 합니다.")
break
돈을 넣어 주세요: 1 돈을 다시 돌려주고 커피를 주지 않습니다. 남은 커피의 양은 5개 입니다.
돈을 넣어 주세요: 1000 거스름돈 700를 주고 커피를 줍니다.
돈을 넣어 주세요: 2000 거스름돈 1700를 주고 커피를 줍니다.
돈을 넣어 주세요: 3000 거스름돈 2700를 주고 커피를 줍니다.
돈을 넣어 주세요: 4000 거스름돈 3700를 주고 커피를 줍니다.
돈을 넣어 주세요: 5000 거스름돈 4700를 주고 커피를 줍니다.
커피가 다 떨어졌습니다. 판매를 중지 합니다.
____while 문의 맨 처음으로 돌아가기 - continue
: while문을 빠져나가지 않고 while문의 맨 처음(조건문)으로 다시 돌아가게 만들고 싶은 경우, continue문 사용
#1부터 10까지의 숫자 중에서 홀수만 출력하는 것을 while문을 사용해서 작성
a = 0 # 변수 a를 0으로 초기화
while a < 10: # a가 10보다 작은 동안 반복
a = a + 1 # a를 1씩 증가시킴
if a % 2 == 0: # 만약 a를 2로 나눈 나머지가 0이라면(즉, a가 짝수라면)
continue # continue문을 만나면 현재 반복을 중지하고 다음 반복으로 넘어갑니다.
print(a) # a를 출력합니다. (홀수인 경우에만 출력됩니다.)
1
3
5
7
9
____무한 루프
while True:
수행할 문장1
수행할 문장2
...
__03-3 for 문
____for 문의 기본 구조
for 변수 in 리스트(또는 튜플, 문자열):
수행할 문장1
수행할 문장2
...
____예제를 통해 for 문 이해하기
##1. 전형적인 for문
>>>test_list = ['one', 'two', 'three']
>>>for i in test_list:
... print(i)
...
one
two
three
#2. 다양한 for문의 사용
>>>a = [(1,2), (3,4), (5,6)]
>>>for (first, last) in a:
... print(first + last)
...
3
7
11
# marks1.py
marks = [90, 25, 67, 45, 80] #학생들의 시험점수 리스트
number = 0 #학생에게 붙여줄 번호
for mark in marks: #90, 25, 67, 45, 80을 순서대로 marks에 대입
number = number +1
if mark >= 60:
print("%d번 학생은 합격입니다." % number)
else:
print("%d번 학생은 불합격입니다." % number)
____for 문과 continue 문
# marks2.py
#60점 이상인 사람에게는 축하 메시지를 보내고 나머지 사람에게는 아무 메시지도 전하지 않음
marks = [90, 25, 67, 45, 80]
number = 0
for mark in marks:
number = number +1
if mark < 60:
continue #아래에 있는 print문 실행 안 하고 처음으로 돌아감
print("%d번 학생 축하합니다. 합격입니다. " % number)
____for 문과 함께 자주 사용하는 range 함수
>>> a = range(10)
>>> a
range(0, 10)
>>> a = range(1, 11)
>>> a
range(1, 11)
#for와 range 함수를 사용하면 1부터 10까지 더하는 것을 다음과 같이 쉽게 구현할 수 있다
>>>add = 0
>>>for i in range(1, 11):
... add = add + i
...
>>>print(add)
55
#**for와 range를 이용한 구구단**
>>>for i in range(2,10): # 1번 for문
... for j in range(1, 10): # 2번 for문
... print(i*j, end=" ")
... print('') #i 2 뽑아오고 j 1~9까지 뽑아온 다음 print '' 그다음 i 3...
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
____리스트 컴프리헨션 사용하기
# 리스트 컴프리헨션: 리스트 안에 for문을 활용하여 리스트를 간결하게 생성하는 방법
a = [1, 2, 3, 4] # 리스트 a를 정의합니다.
result = [num * 3 for num in a] # 리스트 컴프리헨션을 사용하여 a의 각 항목에 3을 곱한 결과를 result 리스트에 담습니다.
print(result) # 결과를 출력합니다.
# 조건을 추가하여 리스트 컴프리헨션을 사용할 수 있습니다.
result = [num * 3 for num in a if num % 2 == 0] # 리스트 a의 짝수에만 3을 곱하여 result 리스트에 담습니다.
print(result) # 결과를 출력합니다.
# 여러 개의 for문을 사용하여 리스트 컴프리헨션을 구성할 수 있습니다.
result = [x * y for x in range(2, 10) for y in range(1, 10)] # 구구단을 리스트 컴프리헨션으로 구현합니다.
print(result) # 결과를 출력합니다.
'파이썬기초 > 파이썬기본개념2' 카테고리의 다른 글
[점프투파이썬] ## 04장 파이썬의 입출력 [#파이썬공부기록-요약정리] (0) | 2023.11.22 |
---|---|
[점프투파이썬] 02장 파이썬 프로그래밍의 기초, 자료형 [#파이썬공부기록-요약정리] (0) | 2023.11.22 |