파이썬/파이썬 입문 공부일지

파이썬 공부일지 16. 범위 자료형 range, 조건반복문 while!

Tomitom 2022. 10. 13. 17:27
반응형

숫자, 불, 문자열, 리스트, 딕셔너리... 

-> 표현 형태가 정해져 있습니다. 

 

 range범위 의 경우에는 형태가 없습니다. 

 

범위 자료는 함수 형태로 만들고 사용합니다. 

range(?????) <- 이렇게 괄호가 들어가는 함수 형태로 작성합니다. 

함수 자체가 데이터의 역할을 합니다. 

 

range(5)는 0~5까지의 데이터를 포함하고 있다고 보시면 됩니다. 

 

함수 자체가 데이터가 됩니다.

 

자료형 이름으로 된 함수는 변환의 기능을 포함하고 있습니다. 

즉, range(5) 함수 자체를 리스트에 넣으면 

 

이렇게 리스트가 0~4까지 표시가 됩니다. (자릿수로 5)

(파이썬에서는 범위를 지정할 때 입력한 숫자는 포함하지 않습니다! string[0:2] 거나 list_a[0:2] 일 때 끝자리를 포함하지 않는 것처럼요.) 

 

for 반복문과 범위를 함께 사용하는 방법입니다. 

for 반복문과 범위를 조합하면 

 

for 변수 in 범위 : 

    코드 

 

이렇게 됩니다. 즉 범위의 숫자만큼 코드가 반복되는 거예요. 

 

 

 

만약 range(2,10) 으로 2에서 부터 9까지 (10의 앞 숫자까지 범위가 지정되니까) 반복한다고 한다면 

 

이렇게 반복되겠죠.

범위를 불러올 때에는 불러오는 단위를 지정할 수도 있습니다. 

예를 들어 range(2,10,3) 이라고 한다면 2에서부터 9까지 3씩 단위를 세서 불러오는 거예요. 

 

 

 

 

 


 

 다음으로 for 반복문에 이어서 while 반복문이에요. 

while 반복문은 조건을 주고 (불 표현식) 그 조건이 참인 동안 문장을 계속 반복합니다. 

True 일 동안에는 쉬지 않고 반복해요. 

 

while 불 표현식(조건문) : 

        반복할 코드 

 

(불 표현식 = 조건 표현식)  if와 구조가 비슷합니다. 

while -> 조건이 만족하는 동안에 문장을 반복합니다. 

 

i가 10을 초과하는 순간 반복이 멈춥니다.

 

 


for 와 while 반복문의 유형을 비교할 때 다음과 같은 차이점이 있습니다. 

 

- for : 횟수를 정해서 그만큼 반복합니다. 

- while  : 조건을 정해서 False 될 때까지 반복합니다.

 

조건을 반복해서 활용해야 한다면 while 반복문을 쓰는 것이 유용할 거예요. 

 

while 반복문은 상태를 기반으로 반복하기 때문에 리스트에서 remove() 함수가 한 번당 하나의 값만을 제거할 수 있었지만

while 반복문을 사용하여 여러 개를 제거할 수 있습니다. 

값이 존재하지 않을 때까지 삭제하는 거예요. 

 

 

cats 리스트 바구니에 담겨있는 고양이들을 데려가볼게요. 

 

cats = ["고양이","고양이","고양이"]

 

우선 in 으로 cats 바구니에 고양이가 있는지 확인을 하고 고양이가 있다면 데려가도록 하겠습니다.  

그럼 조건문에는 바구니에 고양이가 있어야겠죠. 


while "고양이" in cats:
    print(cats)        -> # 고양이가 한마리씩 사라지는 것을 확인하기 위해  데려가기 전 고양이가 몇 마리 있는지 볼게요.
    cats.remove("고양이")

 

 

고양이를 모두 데려갔습니다.

고양이가 하나도 없을 때까지 데려갑니다. 

 

 


while 은 시간을 기반으로 반복할 수 있습니다. 

시간을 기반으로 반복하기 위해서는 유닉스 타임을 알아야 하는데, 

유닉스 타임은 세계 표준시입니다. 1970년 1월 1일 0시 0분 0초를 기준으로 몇 초가 지났는지를 정수로 나타내며 

전 세계 공통으로 사용하는 표준시예요. 

 

파이썬에서 유닉스 타임을 구할 때에는 

import time  이라는 모듈을 실행한 뒤에 

time.time()  으로 유닉스 타임을 구할 수 있습니다. 

(이전에 import datetime 모듈을 구했던 것과 비슷해요.) 

 

import time

time.time()
1665633054.0235455

 

그럼 이제 40 초 동안 number 라는 함수에 1을 더하는 코딩을 해볼게요. 


number = 0

 

처음의 숫자는 0 이에요.


target_ticket = time.time() + 40     -> target_ticket 이라는 변수에 현재 시간으로부터 40을 더해서 40초 이후의 기준 값을 정해줄게요. 

 


while time.time() < target_ticket :     -> 40초가 지나서 현재의 시간이 target_ticket 의 숫자보다 커졌을 때까지는 숫자 1을 더하도록 하겠습니다. 
    number += 1

 

이렇게 코드를 입력하면 

 

짠 40초 기다리세용

 

40초 동안 몇 번을 더했는지 그 값을 구할 수 있습니다. 

 

 


 while 반복문 중 break 키워드와 continue 키워드를 알아볼게요. 

 

break 를 사용하면 조건과 무관하게 반복이 멈춥니다.

break 는 언제 반복을 그만둘지에 대한 조건과 함께 사용되는 것이 일반적입니다. 

 

 

 

 

 

 

continue 함수는 현재 반복을 생략하고 다음 반복부터 다시 시작하는 거예요. 

 

 

 

for i in [3,6,9] :    -> 3,6,9 를 반복하는 for 구문을 만들고 
    if i == 6 :    -> i 의 값이 6이 되었을 때 
        continue    -> 현재의 반복을 생략하고 다음 반복으로 넘어갑니다. 
    print(i)
    

그러면 6을 제외한 
3
9

만 남는 거예요. 

 

여기까지 있을 때 키워드만 한 번 정리할게요. 

 

범위 정수의 범위를 나타내는 값, range() 함수로 생성합니다. 
while 반복문 조건식을 기반으로 코드를 반복해서 실행합니다. 
break 키워드 반복문을 벗어날 때 사용합니다. 
continue 키워드 반복문의 현재 반복을 생략하고 다음 반복부터 다시 사용할 때 쓰는 구문입니다. 

 

지금은 이론적인 내용만 정리하고 있는데 활용해서 예제를 푸는 것이 정말 어렵네요 ㅠㅜ

기회가 되면 예제 문제와 풀이까지 추후에 정리하도록 할게요.

우선은 여기까지! 

반응형