[점프투파이썬] 3장 제어문 정리

해롱그·2023년 5월 31일
0

파이썬

목록 보기
2/12
post-thumbnail

제어문

1. 조건문(if문)

만약 ~하면 ~하라
ex) 돈이 있으면 택시를 타고, 돈이 없으면 걸어간다

money = True
if money:
    print("택시를 타고 가라")
else:
    print("걸어가라")
    
>>> 택시를 타고 가라

if문의 기본 구조

<들여쓰기>
if 아래쪽에 들여쓰기가 잘못 되어 있을 경우 *오류 발생!

# 올바른 들여쓰기
if 조건문:
	수행할 문장1
    수행할 문장2
    수행할 문장3

# 잘못된 들여쓰기
money = True
if money:
    print("택시를 타고 가라")
print("aa")
else:
    print("걸어가라")

>>> lo.py", line 5
    else:
    ^
SyntaxError: invalid syntax

1. 불

if True:
	print("참")
else:
	print("거짓")

2. 비교연산자

money = 2000
if money >= 3000:
    print("택시를 타고 가라")
else:
    print("걸어가라")

3. and, or, not

money = 2000
card = 1
if money >= 3000 or card:
    print("택시를 타고 가라")
else:
    print("걸어가라")

4. x in s, x not in s

money = 2000
card = 1
if 1 not in [1,2,3]:
    print("택시를 타고 가라")
else:
    print("걸어가라")
    
>>> 걸어가라

5. 아무 실행 없이 넘어가고 싶을 때 : pass

money = 2000
card = 1
if 1 in [1,2,3]:
    pass
else:
    print("걸어가라")

6. 다중 조건 판단 elif

pocket = ['paper', 'cellphone']
card = True
if 'money' in pocket:
    pass
elif card:
    print("택시를 타고가라")
else:
    print("걸어가라")

>>> 택시를 타고가라

7. 조건부 표현식
다른 언어의 3항 연산자 <변수 = (조건) ? 참 : 거짓;> 을 파이썬 방식으로 나타낸 것

score = 70
if score >= 60:
    message = "success"
else:
    message = "failure"
print(message)

>> success

이러한 식을 파이썬의 '조건부 표현식'을 사용하면 훨씬 간단하게 쓸 수 있다!!

score = 70
message = "success" if score >= 60 else "failure"
print (message)

2. 반복문(while문, for문)

해당 조건이 참일 때 ~를 반복하라

(1) while문

  • while문의 기본 구조

    while <조건문>:
    <수행할 문장1>
    <수행할 문장2>
    <수행할 문장3>
    ...

💡 example

treehit = 0
while treehit < 10:
    treehit += 1
    print("나무를 %d번 찍었습니다." % treehit)
    if treehit == 10:
        print("나무가 넘어갑니다.")

treehit < 10 인 조건일 때 while안에 있는 문장 반복 실행!
treehit = 9일 때
treehit += 1 -> treehit = 10
if treehit == 10:
print("나무가 넘어갑니다.") 실행
10 < 10 (X) 이므로 반복문 종료!

break

coffee = 10
money = 300
while money:
    print("돈을 받았으니 커피를 줍니다.")
    coffee -= 1
    print("남은 커피의 양은 %d개 입니다." % coffee)
    if not coffee:
        print("커피가 다 떨어졌습니다. 판매를 중지합니다.")
        break

if문이 실행되고 break가 있으므로 money는 300이지만(while문이 True) 반복문이 종료된다!

continue

a = 0
while a < 10:
    a += 1
    if a % 2 == 0: -> 짝수인가?
        continue
    print(a)

while문 안쪽의 문장들을 수행하다가 continue를 만나게되면 그 아래를 실행하지 않고 다시 while문의 맨 처음으로 돌아간다!
=> continue를 만나는건 짝수이므로 print되는 건 홀수만!

무한 루프

while True:
수행할 문장1
수행할 문장2
...

while True:
    print("안녕하세요")

>>> 안녕하세요 무한대로 출력..

(2) for문

  • for문의 기본 구조

    for 변수 in 리스트(or 튜플, 문자열):
    수행할 문장1
    수행할 문장2
    ...

test = ['one', 'two', 'three']
for i in test:
    print(i)

다양한 for문의 사용

a = [(1,2), (3,4), (5,6)]
for (first, last) in a:
    print(first + last)
marks = [90, 25, 67, 45, 80]
number = 0
for mark in marks:
    number += 1
    if mark >= 60:
        print("%d번 학생은 합격입니다." % number)
    else:
        print("%d번 학생은 불합격입니다." % number)

continue

marks = [90, 25, 67, 45, 80]
number = 0
for mark in marks:
    number += 1
    if mark < 60:
        continue
    print("%d번 학생 축하합니다. 합격입니다." % number)

break

= while문과 동일!

for와 함께 자주 사용하는 range함수

i in range(a, b) -> a ≤ i < b

sum = 0
for i in range(1, 11):
    sum = sum + i
print(sum)

💡 example. 구구단 (이중포문)

for i in range(2, 10):
    for j in range(1, 10):
        print(i * j, end=" ")
    print('')
  
>>> 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문이 다 끝난 후 바깥쪽 for문으로 다시 돌아온다.
파이썬의 print는 자동개행인데 end 옵션을 줄 경우 개행하지 않고 출력됨!

  • 안쪽 구문 -> 같은 줄
  • 바깥쪽 구문 -> 개행

리스트 내포(List comprehension)

간결하게 정리하는 것?

result = [x*y for x in range(1, 10) for y in range(1, 10)]

result = []
for x in range(2, 10):
    for y in range(1, 10):
        result.append(x*y)

담고자 하는 것을 가장 앞에 적는다!


Reference
참고한 영상

profile
사랑아 컴퓨터해 ~

0개의 댓글