rueki
day3-2. 반복문 (for , while) 본문
이번 시간에는 조건문에 이어서 반복문에 대해 알아보자.
반복문에는 크게 for문과 while 문이 있다.
while 문의 구조로는
while 조건:
실행명령
# 조건이 True 이면 명령을 실행해라
while 문에서 가장 중요한 개념은 무한 loop이다. 조건 반복을 끝내는 기준이 없으면 끝없이 반복할 것이다.
이를 위해서 break라는 개념은 필수이다. break를 거는 시점에서 반복문에서 탈출을 할 수가 있다.
예를 통해서 알아보자. 1부터 10까지 다 더하는 문제이다.
while 문을 이용해서 풀 것인데, break를 거는 조건으로 더하는 숫자가 10이 넘을 경우
반복문을 멈춰야 한다는 것을 인지하자.
cnt = 1
while True:
print(cnt, end=' ')
cnt += 1
if(cnt>10):
break;
while 문의 구조를 알아보았다. 이를 복습하기 위해 퀴즈를 한 번 풀어보도록 하자.
while문을 이용한 구구단 출력을 해보자.
cnt = 1 # 1부터 9까지 증감 위한 변수
i = 1 # n 단 숫자
while True:
print(f'{i} x {cnt} =', i*cnt, end = '\n')
i += 1
cnt += 1
if cnt >9:
break
Quiz2. 리스트 내에 가장 큰 수와 가장 작은 수를 삭제하시오
numList = [100, 200,50, -30, 999, 10, -30]
위의 리스트를 보면 중복된 숫자 -30 이 있다. 파이썬의 set 기능을 이용해서 중복 숫자를 없애고
다시 리스트로 캐스팅하면 중복 숫자가 제거된 리스트를 반환받을 수가 있다.
그리고 비교를 위해서 while 문을 사용할 것인데, 최소값과 최대값을 리스트의 첫 번째 요소로 가정하고,
리스트 인덱스를 하나씩 넘기면서 비교를 하면 문제를 풀 수가 있다.
numList = [100,200,50,-30,999,10,-30]
numList = list(set(numList))
i = 0
target = numList[0]
tarMin = numList[0]
while i<len(numList):
if target < numList[i]:
target = numList[i]
if tarMin > numList[i]:
tarMin = numList[i]
i += 1
numList.remove(target)
numList.remove(tarMin)
print(f'최대값 최소값 제거한 리스트 : {numList}')
리스트 내의 모든 요소를 비교해야하니, 리스트 길이만큼을 비교하고, 각 요소를 하나씩 비교해나가면 되는 구조이다.
이제는 for문에 대해서 알아보자.
for문은 흔히 range라는 것과 같이 쓰이는데 이에 대한 구조로는 아래와 같다.
for 인덱스 변수 in range(start, end , step):
명령문
1부터 5까지 숫자를 출력하는 코드로는
for i in range(1,6):
print(i)
이렇게 표현 할 수가 있다.
1부터 100까지의 합은 역시 range(1, 101)로 설정하고 증감 연산자를 사용해서 표현할 수가 있다.
sum = 0
for i in range(1,101):
sum = sum + i
print(sum)
기본적인 for문을 알아보았으니 이제 다중 for문에 대해서 알아보자.
구조로는 for문 안에 for문이 있는 것이며 예제를 통해서 알아보자.
for i in range(0, 3):
print('-'*30,)
for j in range(0,3):
print('hello world')
코드를 실행해보면 이해가 되겠지만, 설명을 덧붙이자면 j가 다 돌면 i가 한 번 도는 구조이다. 즉 안에 반복문이 다 실행되고, 바깥 반복문이 실행되는 것이다.
위의 예제를 실행해보면 j의 변수가 있는 hello world 명령문이 3번 출력되고 i에 대한 명령문이 출력되는 것을 알수가 있다.
그리고 파이썬에서 특히 많이 쓰이는 것은 리스트 안의 for문인데, 말 그래도 리스트 안에 for문이 내포된 형태이다.
가장 기본적인 구조로는 리스트 이름 = [결과값 for 명령문] 이다.
1부터 10까지 숫자로 이루어진 리스트 만드는 예제를 기본적인 for문과 리스트 내 for문 두 가지로 풀어보자.
numList = []
for i in range(1,11):
numList.append(i)
print(numList)
#######################
numList2 = [x for x in range(1, 11)]
print(numList2)
두 방식 모두 같은 결과가 나온다는 것을 알 수가 있다.
리스트 내 이중 for문에 대해서도 알아보자.
말그대로 리스트 내에 for문을 두개를 넣는 구조이며 예제를 통해 확인해보자.
구구단에서 9만 곱하는 숫자를 출력해보자. 2x9, 3x9... 9x9 만 해서
numList = [x*y for x in range(2,10) for y in range(1,10) if y % 9 ==0]
한 줄로 쉽게 구현이 되었다.
이로써 파이썬의 조건문, 반복문 모두 알아보는 시간이 되었다.
'python' 카테고리의 다른 글
day4-2. lambda 함수, 내장함수 (0) | 2020.01.06 |
---|---|
day4-1. 함수 (Function) (0) | 2020.01.06 |
day3-1. if ~ else 문 (0) | 2020.01.05 |
day2. 집합 자료형 (0) | 2020.01.01 |
day1. 파이썬의 기초 - 변수와 문자열, 연산자 (0) | 2020.01.01 |