본문 바로가기
study/python

파이썬 for문 (반복문) 예제

by kuah_ 2022. 5. 26.

 

 

 

 

for

- 변수 in Iterator(반복자) 형태

- 몇 회 반복할지와 어떤 형태로 반복할지를 설계하는 것

- Iterator로는 range 함수 및 리스트 자료형이 사용될 수 있음

- range 함수는 (시작, 끝, 스텝)으로 구성되는데 인덱스를 기준으로 시작이 0이 기본이기 때문에 끝은 원하는 수 +1로 지정

- for의 조건식이 반복되는 동안 종속문장을 출력하고 그 후 다음 문장을 출력
- 변수의 값 변화와 조건식의 참, 거짓을 중점으로 표를 그려보는 것 추천

 

 

 

Q1. for문을 range()함수, 튜플, 리스트, 문자열을 이용하여 수행

 

A. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
print("=== range()함수 사용 ===")
for i in range(15):
    print(i)
 
print("=== 튜플 사용 ===")
for i in (1,2,2,3,4,5):
    print(i)
 
print("=== 리스트 사용 ===")
for i in [5,4,3,2,1,0,-1]:
    print(i)
 
print("=== 문자열 사용 ===")
for i in "2468" :
    print(i)
cs

range(시작, 끝, 스텝) 

인덱스(0부터 시작)가 기준이기 때문에

끝은 원하는 마지막 수 +1로 지정해주어야 함. 

스텝은 간격.

 

 


 

Q2. for문을 활용하여 아래와 같은 결과 출력

 

 

A.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# ver.1
for i in range(1311) :
    print(i, '\t', end=''# end=''는 디폴트인 엔터를 없애는 인자
    if (i%5 == 0) : # i가 5의 배수일 때 엔터
        print()
 
# ver.2
for i in range(1,31,1):
    print(i, end="\t")
    if i % 5 == 0:
        print()
 
# ver.3 
for i in range(1,31):
    print(i, end = "\n" if i % 5 == 0 else "\t" )
print()
cs

 


 

 

Q3. 리스트를 사용하지 않고 입력받은 수까지의 홀수와 짝수, 각각의 합을 각각 한줄로 출력하는  프로그램

 

 

A. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
oddSum, evenSum = 00
num = int(input("값 입력 : "))
st_odd ='홀수 :  '
st_even ='짝수 : '
for i in range(num, 0-1): #입력받은 값~1까지 반복
    if i % 2 == 0:
        st_even += (str(i) + ' 'if i == 2 else (str(i) + ', '#삼항연산자
        evenSum += i   
    else:
        st_odd += (str(i) + ' 'if i == 1 else (str(i) + ', ')
        oddSum += i  
print("-"*50)
print(st_odd,' 홀수의 합 : ', oddSum)
print("-"*50)
print(st_even,' 짝수의 합 : ', evenSum)
print("-"*50)
print("%d 에서 1 까지의 합 : %d" % (num, oddSum + evenSum))
cs

삼항연산자 : (조건문이 true일 경우 실행할 문장) if (조건문) else (else 종속문장)

문자열을 str()형변환 함수를 활용하여 string형으로 바꿔준 후 합하는 방식

 


 

 

Q4. 이중 for문을 사용하여 아래 실행결과와 같이 출력

 

 

A. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# ver. 1
s, n = 14
for i in range(1281) :
    for j in range(s, n) :
        num = i % 9
        if num == 0 :
            num += 9
        print("{} * {} = {}".format(j, num, num*j), "\t", end='')
 
        if j % 3 == 0 :
            print()
 
    if i % 9 == 0 :
        s += 3
        n += 3
        print()
cs

 

1
2
3
4
5
6
# ver. 2
for i in range(1103):  # 1부터 9까지 3의 간격으로 i는 1, 4, 7 
    for k in range(1101): # 1~9까지 곱해지는 수
        print("%d * %d = %d   \t  %d * %d = %d  \t  %d * %d = %d  " 
             % (i,  k,  i*k,    i+1,   k,  (i+1)*k, i+2,  k,  (i+2)*k )) # i+1, i+2
    print() #간격 띄어줌
cs

 


 

 

Q5. 이중 for문을 사용하여 아래 실행결과와 같이 출력

 

 

A. 

1
2
3
4
5
6
7
8
9
# ver.1
star="*"
for i in range(0,2): #위쪽, 아래쪽 두 번 반복
    for k in range(1,4): 
        if i==0:
            print(star*(i+k))
        else:
            print(star*(4-k))
print()
cs

 

1
2
3
4
5
6
7
8
9
10
# ver.2
= 1
for i in range(17) : # 6개의 라인
    if i < 4 : 
        e = e+1
    elif i > 4 :
        e = e-1 
    for j in range(1, e) :
        print("*", end='')
    print()
cs

 

1
2
3
4
5
6
7
# ver3. 
for y in range(1,7):
    for x in range(1,4):
        if y>=and (y-x)<4:
            print("*",end="")
    print()
print()
cs

ver.2와 유사하지만 and 연산자를 이용해 조건문을 하나만 사용

 

 

 

 

댓글