[python] 반복문

728x90

1. for문

파이썬에서 for문은 아래 형식으로 주로 사용합니다.

for in iterable객체:
#    실행문

 

여기서 iterable하다는 것은 반복이 가능하다는 것입니다.

그리고 for문은 더이상 반복가능하지 않으면 자동으로 종료됩니다.

파이썬에서 iterable한 자료형에는 문자열, 리스트, 튜플, 집합, 딕셔너리 등이 있습니다.

그리고 iterable한 객체를 반환하는 함수에는 range, reversed, enumerate,filter,map,zip 등이 있습니다.

 

아래 예제를 통해 사용방법을 살펴보겠습니다.

for i in range(10): # 0~9
    print(i, end=",")
    #출력: 0,1,2,3,4,5,6,7,8,9,

for x in range(1,10): # 1~9
    print(x, end=".")
    # 출력: 1.2.3.4.5.6.7.8.9.

for a in range(1,11,2): #1~10, 2칸씩
    print(a, end=",")
    #출력:1,3,5,7,9,


sum1=0
for i in range(1,10):
    sum1 += i #1~9까지의 합

print(f"합: {sum1}") #출력:합: 45

print(sum(range(1,10))) #출력: 45

print(sum(range(4,100,4))) #출력: 1200 -> 1~100까지 4의 배수의 합

sum2 = 0
for i in range(0,100,4):
    print(i,end=" ")
    #출력: 0 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96
    sum2 = sum2+i

print(sum2) #출력:1200

for num in range(1,21):
    print("대기번호 : "+str(num).zfill(3)) #zfill(3)은 3개의 공간을 메우고 만약에 공간이 없다면 0으로 채운다는 의미
    
    # 출력:
    # 대기번호 : 001
    # 대기번호 : 002
    # 대기번호 : 003
    # 대기번호 : 004
    # 대기번호 : 005
    # 대기번호 : 006
    # 대기번호 : 007
    # 대기번호 : 008
    # 대기번호 : 009
    # 대기번호 : 010
    # 대기번호 : 011
    # 대기번호 : 012
    # 대기번호 : 013
    # 대기번호 : 014
    # 대기번호 : 015
    # 대기번호 : 016
    # 대기번호 : 017
    # 대기번호 : 018
    # 대기번호 : 019
    # 대기번호 : 020
    
lists1 = ['aa','bb','cc','dd']

for i in lists1:
    print(i,end=",")
    #출력:aa,bb,cc,dd,

print()

str1 = "abcdefg"

for i in str1:
    print(i, end=" ")
    #출력: a b c d e f g
print()

tuples1 = (1,2,3,4,5,)
for i in tuples1:
    print(i,end=" ")
    #출력:1 2 3 4 5
print()

dicts1 ={
    'name':'yj',
    'age':33,
    'hobby':'python'
}

for key in dicts1:
    print(f"key: {key},value1: {dicts1[key]},value2: {dicts1.get(key)}",end=" ")
    #출력: key: name,value1: yj,value2: yj key: age,value1: 33,value2: 33 key: hobby,value1: python,value2: python

print()

name = "Apple"

for n in name:
    if n.isupper(): #문자 하나가 대문자가 맞다면
        print(n,end="")
    else: #문자 하나가 대문자가 아니라면
        print(n.upper(),end="") #대문자 변환

    #출력: APPLE
print()

str2 = "abcdefghi"

str3 = reversed(str2)

for i in str3:
    print(i,end=" ")
    #출력: i h g f e d c b a
print()

numbers1 = [33,44,55,11,22,88,1,3,98]

# break

for i in numbers1:
    if i==88:
        print(f"stop:{i}",end=" ")
        break
    else:
        print(i, end=" ")

    #출력: 33 44 55 11 22 stop:88

print()

# continue

lists2 = ['1',33,True,44,88,complex(4)]

for i in lists2:
    if type(i) is not int: # 타입이 int가 아니라면
        continue #그냥 지나간다

    else:
        print(f"{i},{type(i)}",end=" ")
    #출력: 33,<class 'int'> 44,<class 'int'> 88,<class 'int'>

print()

#for - else문

numbers3 = [33,44,55,11,22,88,1,3,98]

for num in numbers3:
    if num == 24:
        print(f"stop:{num}")
        break
else: #for문을 모두 돌았는데 조건문에 적합한 값이 없을 경우
    print("못찾음")

# 이중 반복문
# 구구단 출력
for i in range(2,10):
    for j in range(1,10):
        print(i*j, end=" ")
    print()

# 출력:
# 2 4 6 8 10 12 14 16 18
# 3 6 9 12 15 18 21 24 27
# 4 8 12 16 20 24 28 32 36
# 5 10 15 20 25 30 35 40 45
# 6 12 18 24 30 36 42 48 54
# 7 14 21 28 35 42 49 56 63
# 8 16 24 32 40 48 56 64 72
# 9 18 27 36 45 54 63 72 81

2. while문

사용방법은 아래와 같습니다.

while <bolean>:
	#실행문

 

위에서 bolean값이 True일 경우에 실행합니다. 그런데 for문과 다르게 종료에 대한 조건을 넣어줘야 무한히 반복하지 않습니다. 즉 원하는 결과를 얻었다면 bolean값을 false로 만들어줘야 합니다.

 

아래 예제를 통해 사용방법을 확인해보겠습니다.

n = 5
while n > 0: #n이 0 초과일때만 실행 -> n이 0이하가 되면 반복 종료
    print(n,end=" ")
    n -= 1 # n을 1씩 감소
    #출력: 5 4 3 2 1
print()

lists1 = ['aa','bb','cc','dd']

while lists1: # list1값이 있다면 반복
    print(lists1.pop(),end=" ") list1의 값을 뒤에서 부터 하나씩 삭제 후 출력
    #출력: dd cc bb aa
print()

# break, continue 

num = 5

while num > 0:
    num -= 1
    if num == 2: # num이 2일 경우 종료
        break
    print(f"num: {num}", end=",")

    #출력: num: 4,num: 3,
print()

num2 = 5

while num2 > 0:
    num2 -= 1
    if num2 == 2: #num2이 2가 되면 그냥 진행 -> 따라서 2값은 출력하지 않음
        continue
    print(f"num2: {num2}", end=",")
    # 출력: num2: 4,num2: 3,num2: 1,num2: 0,
print()

#while - else

num3 = 10

while num3 >0:
    num3 -=1
    print(num3,end=" ")
    if num3 == -1:
        break
else: # 반복이 끝난 후 실행됨
    print("종료")

#출력: 9 8 7 6 5 4 3 2 1 0 종료

num4 = 10

while num4 >0:
    num4 -=1
    print(num4,end=" ")
    if num4 == 2:
        break
else:
    print("종료")
#출력: 9 8 7 6 5 4 3 2
print()

lists2 = ['aa','bb','cc','dd']

i = 0
str1 = "ee"

while i <len(lists2):
    print(lists2[i], end=",")
    if lists2[i] == str1:
        break
    i +=1
else:
    print("못찾음")

#출력: aa,bb,cc,dd,못찾음

while True:
    if not lists2:
        break
    print(lists2.pop(), end=" ")
#출력:dd cc bb aa

'PYTHON Programming > Python' 카테고리의 다른 글

[python] 함수  (0) 2024.04.23
[python] 컴프리헨션  (0) 2024.04.23
[python] 제어문  (0) 2024.04.22
[python] 변수 및 연산자  (0) 2024.04.22
[python] 자료형  (0) 2024.04.22