파이썬 for문은 C나 자바와 좀 다르다.

 

1) 기본적인 for 루프

가장 기본적인 for문 형식은 아래와 같다. print를 입력할때 indentation(들여쓰기)를 잊지말자.

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

for문

i는 for 루프 안에서 사용할 변수를 뜻한다. range(10) 는 0부터 9까지 10개의 정수를 반환해서 i에 대입한 후 for문을 반복한다. Java에서는 for(int i=0; i<10; i++){ } 와 같은 뜻이다. range(10)은 range(0,10)과도 같다.

 

for루프가 진행되는 동안 0,1,2,3,4,5,6,7,8,9 가 차례로 i에 대입된다.

 

2) 입력을 받는 for 루프

for i in range(3):

    num = eval(input('Enter a number: ')) 
    print ('The square of your number is', num*num)

입력을 받아 제곱을 출력하는 것을 3회 반복한다.

 

num = eval(input()) 에서 input( )함수는 사용자에게 키보드로 input을 받아 문자열로 리턴한다. eval( ) 함수는 받은 문자열을 표현식으로 바꾼다. 그래서 아래처럼 수식도 입력가능하다.

 

3) for루프와 들여쓰기 (indentation)

print('A') 
print('B') 
for i in range(5):
    print('C') # 여기만 코드블록에 해당
print('D') 
print('E') 

들여쓰기는 python 에서 코드블록을 분리하는 기준이다. 들여쓰기를 정확히 지키지 않으면 코드 읽기가 혼란스러워진다. 들여쓰기는 공백 ' ' 으로 표시하는데 몇칸이라는 제한은 없다. 커뮤니티에서는 4칸을 권장한다. 대부분 IDE Default 값이 4칸임.

 

for indentation
for indentation


4) for 루프의 i 변수 사용하기 (인덱스)

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

range(100) 은 range(0,100)이다. 0부터 99까지 값을 i에 대입한다. print 함수로 숫자를 출력한다.

반복횟수를 보여줄때는 i+1 을 한다. 0부터 시작하므로.

 

반복횟수

*잘못 입력한 경우

for wacky_name in range(100):
    print(i) 

for 요소의 이름은 무엇으로 정해도 상관없다. 식별자 규칙에 맞으면. 그러나 i값은 for문의 인덱스와 연결되지 못하고 엉뚱한 값이 출력된다.

 

5) range 함수의 변형(큰수에서 작은 수로)

 

파이썬에서 for문을 잘 사용하려면 range 함수에 대하여 잘 알아야 한다. range(5,0,-1)은 5에서 시작해서 1까지 -1의 간격으로 수를 반환한다. 5는 시작 숫자. 0은 루프를 멈출 기준이 되는 수. -1은 간격을 의미한다. 즉

 

range(5)는 5에서 시작하여 루프를 한번 돌면 조건식을 검사하고 (0보다 작은지?) 5-1의 연산을 실행한다. 4가 나온다. 이렇게 1까지 반복하고 0에서 식을 검사하면 종료가 된다.

 

for i in range(5,0,-1):
     print(i, end=' ')
print('Blast off!!')

for문 숫자가 떨어진다!

 


6) 별모양 도형

 

C언어 때부터 for문 하면 별모양 도형으로 놀기가 있다. 파이썬은 형식이 조금 다르다.

for i in range(4):
	print('*'*6)

range(4)는 0,1,2,3 까지 네번을 의미한다. 0부터 시작하니 헷갈리지 말도록 주의한다.

 

print('*' * 6 )의 곱하기 표시(아스테리크스)는 문자열 연산자이다. 숫자 곱하기의 뜻이 아니다. 문자 '*' 자체를 6개 출력하는 식이다.

 

사각형 그리기


* 삼각형 그리기

for i in range(7): 
    print('*'*(i+1)) 


높이가 7인 삼각형을 만들어 봤다. i변수를 사용해서 하나씩 증가시키면 된다.

 

직각삼각형


* 삼각형 반대방향

 

공백을 먼저 찍고 숫자를 줄어들게 하면 삼각형이 반대가 된다.

 

rg = 5

for i in range(rg,0,-1):
    print(i,' '*(i),end='')
    print('*'*(rg-(i-1)))

삼각형 반대로


* 이름 반복하기

 

이름을 반복한다. 입력받은 내용을 반복하는 포맷이다.

 

name = input("your name :")
times = eval(input("how many times you want to print your name?"))

for i in range(times):
    print(i+1,"your name",name)

이름 반복하기


* 높이와 너비 입력받아서 박스 만들기

높이와 너비를 입력받아서 박스를 만든다. 가운데는 공백문자로 채운다.

 

height = eval(input('box height : '))
width = eval(input('box width : '))


for i in range(height):
    if i == 0:
        print(i,"*"*width,sep="")
    else:
        print(i,"*"," "*(width-2),"*",sep="")
print(i+1,"*"*width,sep="")

for루프로 박스만들기


* 높이 입력받아 삼각형 만들기 (가운데로 솓음)

높이를 입력받아서 삼각형을 그린다. range가 높은 숫자에서 아래로 내려와야 하고 처음에 공백문자를 채워서 가운데로 뾰족하게 그린다.

rg = eval(input("input triangle height: "))

for i in range(rg ,0 ,-1):
    print("  " *i ,end='')
    print("* " *(rg - i +1) ,end='')
    print("* " *(rg -i) ,end='')
    print("  " *i)

뾰족 솓은 삼각형


* 길이 입력받아 다이아몬드 그리기

길이를 입력받아 다이아몬드를 그린다. 하나는 내려가고 하나는 올라가는 for 루프를 구성한다.

 

rg = eval(input("input triangle length: "))

for i in range(rg, 0, -1):
    print(" " * i, end='')
    print("*" * (rg - i + 1), end='')
    print("*" * (rg - i), end='\n')

print("",end="")

for i in range(1,rg): 
    print(" "*(i+1),end='') 
    print("*"*(rg-i),end='') 
    print("*"*(rg-i-1)) 

 

다이아몬드 그리기

* 참고 For 루프 유튜브 튜토리얼 영상

공유하기

facebook twitter kakaoTalk kakaostory naver band