Life is too short, You need Python
제어문
if, while, for 등의 제어문에 대해서 탐구하겠다. 프로그래밍은 건축과 비슷한 면이 존재한다.
건축을 할 때 나무, 돌, 시멘트와 같은 재료는 자료형이 되고 집의 뼈대를 이루는 철근은 제어문에 해당된다.
이번 글은 제어문에 관한 자료이다.
if조건문:
수행할문장1
수행할문장2
...
else:
수행할문장A
수행할문장B
...
파이썬에서는 들여쓰기가 중요하기 때문에 다른 프로그래밍언어를 사용했던 사람들은 더욱 주의해야한다.
자료형 | 참 | 거짓 |
숫자 | 0이 아닌 숫자 | 0 |
문자열 | "abc" | "" |
리스트 | [1,2,3] | [] |
튜플 | (1,2,3) | () |
딕셔너리 | {"a":"b"} | {} |
x=3
y=2
print(x>y)
>>> True
print(x<y)
>>> False
print(x==y)
>>> False
print(x!=y)
>>> True
if문
money=2000
if money >= 3000:
print("택시타고가라")
else:
print("걸어가라")
>>> 걸어가라
파이썬이 갖고있는 신기한 조건문
in | not in |
a in 리스트 | a not in 리스트 |
a in 튜플 | a not in 튜플 |
a in 문자열 | a not in 문자열 |
1 in [1,2,3]
>>> True
1 not in [1,2,3]
>>> False
pocket = ['paper', 'cellphone','money']
if 'money' in poket:
print("택시타고가라")
else:
print("걸어가라")
>>> 택시타고가라
아무 일도 하지 않게 설정하고싶을 경우
pocket = ['paper', 'cellphone','money']
if 'money' in poket:
pass
else:
print("걸어가라")
다양한 조건을 판단 (elif)
pocket = ['paper','cellphone'] card=1 if'money' in pocket: print("택시를 타고 가라") else: if card: print("택시를 타고 가라") else: print("걸어가라") |
= | pocket = ['paper','cellphone'] card=1 if 'money' in pocket: print("택시를 타고 가라") elif card: print("택시를 타고 가라") else: print("걸어 가라") |
elif를 통해 더 간단하게 표현 가능
while문
반복해서 문장르 수행해야 할 경우 사용
treeHit=0
while treeHit<10:
treeHit=treeHit+1
print("나무를 %d번 찍었습니다." %treeHit)
if treeHit ==10:
print("나무가 넘어갑니다.")
>>>나무를 1번 찍었습니다.
나무를 2번 찍었습니다.
나무를 3번 찍었습니다.
나무를 4번 찍었습니다.
나무를 5번 찍었습니다.
나무를 6번 찍었습니다.
나무를 7번 찍었습니다.
나무를 8번 찍었습니다.
나무를 9번 찍었습니다.
나무를 10번 찍었습니다.
나무가 넘어갑니다.
break를 통해 while문에서 빠져나옴
coffe=10
money=300
while money:
print("돈을 받았으니 커피를 줍니다.")
coffe=coffe-1
print("남은 커피의 양은 %d개 입니다."% coffe)
if not coffe:
print("SOLD OUT")
break
break문 이용해 커피 자판기 작동 과정
coffee=10
while True:
money=int(input("돈을 넣어 주세요: "))
if money ==300:
print("커피를 준다.")
coffee = coffee-1
elif money>300:
print("거스름돈 %d를 주고 커피를 줍니다." % (money-300))
coffee=coffee-1
else:
print("돈을 다시 돌려주고 커피를 주지 않습니다.")
print("남은 커피의 양은 %d개 입니다." % coffee)
if not coffee:
print("커피가 다 떨어졌습니다. 판매를 중지합니다.")
break
조건에 맞지 않는 경우 맨 처음으로 돌아가기
a=0
while a<10:
a=a+1
if a %2 ==0: continue
print(a)
무한루프
항상 참일 경우
Ctrl+C를 누르면 while문을 빠져 나올 수 있습니다.
i=0
while True:
i+=1
if i>5:break
print("*" * i)
*
**
***
****
*****
for문
for 변수 in 리스트(또는 튜플, 문자열):
수행할 문장1
수행할 문장2
...
전형적인 for문
test_list=['one','two','three']
for i in test_list:
print(i+'1')
변형된 for문
a=[(1,2),(3,4),(5,6)]
for(first,last) in a:
print(first+last)
for문의 응용
marks=[90,25,67,45,80]
number=0 #학생에게 부여할 번호
for mark in marks: # marks의 순서대로 mark에 대입
number = number+1
if mark>=60:
print("%d번 학생은 합격입니다."%number)
else:
print("%d번 학생은 불합격입니다."%number)
>>>1번 학생은 합격입니다.
2번 학생은 불합격입니다.
3번 학생은 합격입니다.
4번 학생은 불합격입니다.
5번 학생은 합격입니다.
for문과 continue
marks=[90,25,67,45,80]
number=0
for mark in marks:
number=number+1
if mark < 60:continue
print("%d번 학생 축하합니다. 합격입니다." %number)
>>>1번 학생 축하합니다. 합격입니다.
3번 학생 축하합니다. 합격입니다.
5번 학생 축하합니다. 합격입니다.
for와 함께 자주 사용하는 range함수
sum=0
for i in range(1,11):
sum=sum+i
1부터 10까지 하나씩 차례로 대입하면서 sum+i라는 문장을 수행
marks=[90,25,67,45,80]
for number in range(len(marks)):
if marks[number]<60:continue
print("%d번 학생 축하합니다. 합격입니다."%(number+1))
range(len(marks)) = range(5)
for와 range를 이용한 구구단
for i in range(2,10): #1번 for문
for j in range(1,10): #2번 for문
print(i*j,end=" ")
print('')
리스트 안에 for문 포함하기
a=[1,2,3,4]
result=[num*3 for num in a]
print(result)
>>> [3,6,9,12]
result=[num*3 for num in a if num %2 == 0]
print(result)
>>>[6,12] 짝수에만 3을 곱하여 담고 싶은 경우
[표현식 for 항목1 in 반복 가능 객체1 if 조건1
for 항목2 in 반복 가능 객체2 if 조건2
...
for 항목n in 반복 가능 객체n if 조건n]
A학급의 평균
A=[70,60,55,75,95,90,80,80,85,100]
total = 0
for point in A:
total+=point
average=(total/len(A))
print(average)
>>>79.0