파이썬의 반복문에 대해서 알아보겠다.
while문의 기본 구조
while 조건문:
수행할_문장
조건문이 참인 경우, 수행할 문장을 계속해서 반복한다.
while문 강제로 빠져나가기
예를 들어 핫도그를 파는 프로그램을 짰다고 해보자.
HotDog = 5
while True:
money = int(input("돈을 넣어 주세요 : "))
if money == 5000:
print("주문하신 핫도그 나왔습니다~ 맛있게 드세요!")
HotDog = HotDog-1
elif money > 5000:
print("네 %d원 받았고 %d원 거스름돈으로 드릴게요~" %(money, (money-5000)))
HotDog = HotDog-1
else:
print("핫도그 하나에 5000원입니다~ 지금 핫도그 %d개 남았습니다~" %HotDog)
만약 이렇게 코드를 짠다면 while True문에 의해서 무한반복 할 것이다. 이럴때 사용하는것이 break문인데
다시한번 코드를 짜보자면
HotDog = 5
while True:
money = int(input("돈을 넣어 주세요 : "))
if money == 5000:
print("주문하신 핫도그 나왔습니다~ 맛있게 드세요!")
HotDog = HotDog-1
elif money > 5000:
print("네 %d원 받았고 %d원 거스름돈으로 드릴게요~" %(money, (money-5000)))
HotDog = HotDog-1
else:
print("핫도그 하나에 5000원입니다~ 지금 핫도그 %d개 남았습니다~" %HotDog)
if HotDog == 0:
print("오늘 핫도그 다 팔렸습니다~")
break
이렇게 if문 안에 break문을 넣어줬다.
그러므로 만약 5개의 핫도그가 다 팔렸으면 break문을 통해 while문을 빠져나오게 된다.
while문에서의 continue문
continue문을 만나면 while문의 조건문으로 다시 돌아간다. 아래 코드는 홀수만 출력해주는 코드이다.
>>> a = 0
>>> while a < 10:
... a = a + 1
... if a % 2 == 0: continue
... print(a)
...
1
3
5
7
9
while 루프를 돌다가 continue문을 만나면 바로 while의 조건문으로 돌아오고 continue문을 만나지 않으면 print(a)를 해주는 것을 알 수 있다. 이렇게 continue문을 이용하면 while문의 조건문으로 돌아오게 할 수 있다.
for문의 기본 구조
for 변수 in 리스트(또는 튜플, 문자열):
수행할_문장1
리스트,튜플, 문자열의 첫번째 요소부터 마지막 요소까지 순회하면서 수행할 문장을 수행한다.
간단한 예를 들어보자면
list = ['one','two','three']
for i in list:
print(i)
#실행결과
one
two
three
리스트의 첫번째 요소인 one이 먼저 변수 i에 대입된 후 print함수를 거쳐서 출력되고 그 후 차례대로 변수 i에 대입된 후 print함수를 거쳐서 출력된다.
>>> a = [(1,2), (3,4), (5,6)]
>>> for (first, last) in a:
... print(first + last)
...
3
7
11
이렇게도 사용 가능하다.
for문에서의 continue문
while문에서 처럼 for문에서도 continue문을 쓸 수 있다.
# marks2.py
marks = [90, 25, 67, 45, 80]
number = 0
for mark in marks:
number = number +1
if mark < 60:
continue
print("%d번 학생 축하합니다. 합격입니다. " % number)
만약 점수가 60점 미만이면 for문의 처음으로 돌아가게되고, 아니라면 출력을 해준다.
range함수
range함수는 숫자 리스트를 자동으로 만들어주는 함수이다.
a = range(0,10)
이라고 하면 0부터 10 미만까지의 숫자를 포함하는 range객체를 만들어준다.(0~9까지)
range함수를 사용하여 위에코드를 변경해보면
# marks3.py
marks = [90, 25, 67, 45, 80]
for number in range(len(marks)):
if marks[number] < 60:
continue
print("%d번 학생 축하합니다. 합격입니다." % (number+1))
이렇게 할 수 있다. 여기서 len(marks)는 5이고, range(5)가 될것이다.
number변수에는 0,1,2,3,4의 숫자가 대입되고 marks[number]는 차례대로 90,25,67,45,80의 값을 가지게 된다.
백준 구구단 문제 풀기!
'학과 공부 > Python' 카테고리의 다른 글
[Python] 내가만든 프로그램 .exe 파일로 만들기 (0) | 2024.01.29 |
---|---|
[Python]함수 (1) | 2024.01.24 |
if, elif, else, in, not in, 비교연산자 [Python] (0) | 2024.01.16 |
format()함수, map()함수, split()함수[Python] (1) | 2024.01.10 |
식별자, 줄바꿈, 자료형, 변수[Python] (0) | 2024.01.10 |