본문 바로가기
Language/Python

[Python] for 반복문 / 예제로 공부하는 Python 100 문제풀이

by 애기 개발자 2022. 1. 14.
반응형

반복문다 거기서 거기일줄 알았다.

 

그렇지만 파이썬은 조금 달랐다. Araboja

 

1. 기본 사용법

for i in range(10):
    print(i)

별거 없다. 이렇게 쓴다.

다른 언어는 for( i = 0; i < 10; i++)

 

이런 느낌이고 java나 javascript 에서는 배열에서 사용할 때 for i in arr 이런느낌이 섞인(?) 것 같다.

 

range() 구조는 

range( [start] : [last] : [step] ) 으로 이루어져 있다. 자세한 사용법은 밑으로.

 

2. 옆으로 나오게 출력

위의 코드를 실행시키면 0~9가 \n이 들어간 상태로 출력이 된다. 이를 1 2 3 4 5... 9 로 나오게 할 수 있다.

 

#0~9가 0 1 2 3 4 5 6 7 8 9 (옆으로 나오게) 출력
for i in range(10):
    print(i, end=' ')

print(i, end=' ') 로 end=' '을 추가해주면 된다.

 

응용으로는 

 

#0, 1, 2..., 8, 9 (마지막 , 안나오게)
for i in range(10):
    if i<9:
        print(i, end=', ')
    else:
        print(i)

이런 방법이 있다.

 

실행 시키면

1, 2, 3, ... , 8, 9 가 출력된다.

 

3. 홀수 / 짝수만 출력

다른 언어를 공부했다면 혹은 앞의

2022.01.10 - [개발/Python] - [Python] 연산자, in(멤버쉽) 연산자, bool

위 글을 봤다면 응용 가능하다.

 

# 4~21 홀수 합
sum = 0
for i in range(4, 22):
    if i%2 == 1:
        sum += i

print(sum)

4~21 까지 홀수의 합을 구하는 반복문이다.

 

if i%2 == 1 의 으로 홀수만 구하는 방법이 있지만,

 

range() 안에는 마지막에 [step] 기능이 있다는걸 봤다.

 

#1~100 짝수만 출력
 
for i in range(2, 101, 2):
    print(i, end=' ')

위와 같이  range(2, 101, 2) 로 step 을 지정해주면 원하는 값을 출력할 수 있다.

 

range(2, 101, 2) 를 풀어 설명하자면

2부터 101까지 2단계씩 올려서 반복 하라. 라는 뜻이다

 

출력하면 2 4 6 ... 100 이 나온다.

 

3. 중첩 반복문

다른 언어를 배웠다면 쉽게 응용 가능하다.

 

가장 기초적인 구구단을 출력해보자면

 

#2단~9단 구구단 출력 
for i in range(2, 10):
    for j in range(1, 10):
        print(i, ' x ', j, ' = ', i*j)

이렇게 하면

 

2 x 1 = 2

2 x 2 = 4

...

9 x 9 = 81

 

로 밑으로 쭉나오게 된다.

 

만약

2 x 1 = 2 3 x 1 = 3 4 x 1 = 4 5 x 1 = 5 ...

2 x 2 = 4 3 x 2 = 6 4 x 2 = 8 5 x 2 = 10 ...

...

2 x 9 = 18 3 x 9 = 27 4 x 9 = 36 5 x 9 = 45...

식으로 옆으로 나오는 구구단은

 

# (옆으로)
for i in range(1, 10):
    for j in range(2, 10):
        print(j, ' x ', i, ' = ', j*i, end=' ')
    print()

반복문 위치만 살짝 수정해주면 된다.

 

4. 리스트 요소 출력

[ ] 로 묶인 리스트를 반복문을 이용해서 출력하는 방법이다.

 

#리스트 요소 출력, 가로로
lst = ['dog', 'hippo', 'elephant', 'lion', 'tiger', 'alligator']

for i in range(len(lst)):
    print(lst[i], end=' ')

간단하다.

 

len( )으로 리스트의 갯수를 구하고 출력할 때 lst[i] 를 사용하여 출력하면 된다.

 

결과는

dog hippo elephant lion tiger alligator

 

이를 역으로 출력할 수도 있다.

 

#리스트 거꾸로 출력

lst = ['dog', 'hippo', 'elephant', 'lion', 'tiger', 'alligator']

for i in lst[ : : -1]: #[ start : last : step] 
    #print(lst[i], end=' ') <- range() 를 쓴게 아닌 lst를 직접 사용했기 때문에 i에 배열 값이 직접 들어간다.
    print(i, end=' ')

리스트도 range처럼 [ start : last : step] 이 구성되어 있다.

 

lst[::-1] 을 쓰면 처음부터 끝까지 역순으로 출력하라. 라는 의미가 된다

 

결과는

alligator tiger lion elephant hippo dog

 

저기서 주의 할 점은

 

위에 썻듯이 print(lst[i], end=' ') 로 쓰면 안된다.

 

range를 사용하여 배열에 정수 정수값이 들어가는게 아닌, 배열 리스트를 직접 사용했기 때문에

 

i 에 0, 1, .. 이 들어가는게 아닌 리스트의 lst[0], lst[1] .. 이  i에 저장되어 진다.

 

그러므로 print(lst[i]) 로 출력 시도시 에러가 발생하게 된다.

 

끝.

 

10 반복문.py

반응형

댓글