본문 바로가기
Spec UP - Backend/혼자 공부하는 파이썬

chap_04-3. 범위 자료형과 while 반복문

by TIS_Ha 2023. 10. 13.
반응형

범위(Range)

리스트, 딕셔너리 외에 for 반복문과 함께 많이 사용되는 범위(range) 자료형의 사용법에 대해 알아보자.

  • 매개 변수에 숫자 한개를 넣는 방법
    • range(A) # A는 숫자
    • 0부터 A-1까지의 정수로 범위를 지정한다.
  • 매개변수에 숫자 두개를 넣는 방법
    • range(A,B) # A,B는 숫자
    • A부터 B-1까지의 정수로 범위를 지정한다.
  • 매개변수에 숫자 세개를 넣는 방법
    • range(A,B,C) #A,B,C는 숫자
    • A부터 B-1까지 정수로 범위를 지정하되, 앞 뒤의 숫자가 C만큼 차이가 발생된다.

이 때 range()하뭇의 매개변수로는 반드시 '정수'를 입력해야한다.

만약 다른 데이터 타입이 매개변수로 입력되면 TypeError가 발생됨에 유의하자.

 

for 반복문:범위와 함께 사용하기

for반복문과 범위를 조합하면 아래와 같은 형태로 사용할 수 있다.

for 숫자 변수 in 범위:
	반복할 코드

for반복문: 리스트와 범위 조합하기

리스트와 범위를 조합하여 '몇번째 반복'중인지를 출력하는 예제를 확인해보자.

array = [273,32,103,57,52]

for i in range(len(array)):
    print("{}번째 반복: {}".format(i, array[i]))

for 반복문: 반대로 반복하기

프로그래밍을 하다보면 반복변수가 큰숫자에서 작은숫자로 반복문을 적용해야하는 경우가 있다.

이를 역반복문이라고 하는데, 역반복문을 사용하는 두가지 방법을 알아보자.

# range()를 이용하는 방법
for i in range(4, 0-1, -1):
    print("현재 반복 변수: {}".format(i)) 
    
# reversed()를 이용하는 방법
for i in reversed(range(5)):
    print("현재 반복 변수: {}".format(i))

위의 코드를 출력하면 좌측과 같이 

반복변수가 큰숫자에서 작은숫자로 반복되어 출력되는 것을 확인할 수 있다.

 

 

 

이 때 range()함수의 매개변수에 '0-1;이라는 수식을 넣었는데, 코드 상 '-1'로 입력해도 무방하다.

다만, "0까지 반복하고 싶다"라는 부분을 강조 표현하기 위해 위와 같이 입력함을 참고하자.

 

중첩 반복문으로 피라미드 만들기

output = ""

for i in range(1,10):
    for j in range(0,i):
        output += "*"
    output += "\n"
print(output)

## 문자열 * 연산자를 이용해 피라미드 만들기
output = ""

for i in range(1,10):
    output += ("*" * i)
    output += ("\n")
print(output)

output = ""

for i in range(1,15):
    for j in range(14,i,-1):   # 1회차) 좌측에 14개의 공백 생성
        output += " "          # 2회차) 좌측에 13개의 공백 생성 ... 
    for k in range(0,2*i-1):   # 1회차) 1개의 * 생성
        output += "*"          # 2회차) 3개의 * 생성(2*2-1)
    output += "\n"
print(output)

 

while 반복문

while 반복문은 <불표현식>이 참인 동안 문장을 계속 반복한다.

while 불 표현식:
	반복할 문장

만약 불 표현식에 <True>를 넣으면 무한 반복이 되며 일부러 멈추지 않는 이상 프로그램이 종료되지 않는다.

만약 개발 중 먹통이 발생하면 Ctrl + C를 눌러 강제종료할 수 있다.

 

while 반복문: for 반복문처럼 사용하기

i=0
while i < 10 :
    print("{}번째 반복입니다.".format(i))
    i += 1

무한반복을 실행해야하거나 조건을 활용해서 반복을 사용해야한다면 for 반복문 보다는 while 반복문을 사용하는게 좋다.

 

while 반복문: 상태를 기반으로 반복하기

list_test = [1,2,1,2]
value = 2

while value in list_test:
    list_test.remove(value)

print(list_test)

remove()함수는 리스트 내부에 해당하는 값을 하나만 제거할 수 있다.

이 때 while 반복문을 활용하면 '리스트 내부에 요소가 있는 동안' remove() 함수를 반복하여 실행하여 여러 요소를 제거할 수도 있다.

 

while 반복문 : 시간을 기반으로 반복하기

import time
number = 0

target_tick = time.time()+5
while time.time() < target_tick:
    number+= 1

print("5초동안 {}번 반복했습니다.".format(number))

유닉스타임(Unix Time)이란 세계표준시(UTC)로 1970년 1월1일0시0분0초를 기준으로 몇초가 지났는지를 정수로 나타낸 것이다.

유닉스 타임을 구하기 위해서는 먼저 시간과 관련된 기능을 가져오고(import time) time.time() 을 실행하면 유닉스 타임을 구할 수 있다.

이 유닉스 타임과 반복문을 활용하면 특정 시간동안 프로그램을 정지/실행 시킬 수 있다.

 

while 반복문 : break 키워드 / continue 키워드

break와 continue는 반복문 내부에서만 사용할 수 있는 특수한 키워드다.

i = 0
while True:
    print("{}번째 반복문입니다.".format(i))
    i=i+1
    
    input_text = input("> 종료하시겠습니까?(y/n): ")
    if input_text in ["y", "Y"]:
        print("반복을 종료합니다.")
        break

break는 반복문을 벗어날 때 사용하는 키워드로, 주로 무한 반복문을 만들고 내부 반복을 벗어날 때 사용한다.

 

numbers = [5,15,6,20,7,25]
for number in numbers:
    if number<10:
        continue
    print(number)

continue는 현재 반복을 생략하고 다음 반복으로 넘어갈 때 사용하는 키워드이다.

위 코드는 continue를 사용하지 않고, if else 구문으로 표현할 수도 있지만 continue 키워드를 사용하면 이후 처리의 들여쓰기를 하나 줄일 수 있다.

반응형

댓글