반복문이란?
예를 들어보자. a라는 변수에 1씩 계속 더해서 1024를 만들고자 한다. 뭐 그럼 아래와 같은 단순 무식한 코드를 생각해볼 수 있다.
a=0
a+=1
a+=1
a+=1
a+=1
...
하지만 생각해보자, 1024면 총 1024줄 동안 a에 1을 더하는 코드를 작성해야한다. list 문서에서도 말했지만, 개발자들은 귀찮은 것을 세상에서 제일 싫어한다. 그래서 a에 1을 더하는 명령을 총 1024번 반복시키는 코드를 아래와 같이 작성할 수 있게 했다.
for i in range(1024):
a+=1
1024줄을 써야할 똑같은 기능의 코드를 단 2줄만에 끝내버렸다. 바로 이게 반복문이다.
반복문은 코딩을 배울 때 겪는 가장 어려운 난관중 하나이다. 하지만 최대한 쉽게 설명할 예정이고, python의 반복문은 매우 간단하기 때문에 잘만 따라온다면 쉽게 이해가 가능할 것이다.
python에는 총 2가지 종류의 반복문이 있다. 아래에서 각각의 특징을 한번 알아보자
for문
for문을 이해하기엔 장바구니 의 개념이 제일 적절하다. 장바구니에서 물건을 하나하나 꺼낸다 라고 생각하면된다. 아래 예제에서는 fruits라는 리스트가 있다. 그리고 for문에서는 fruits에서 과일을 하나하나씩 꺼내 fruit에 담는다. 그리고 하나씩 꺼낼 때마다 과일을 출력한다.
fruits = ["apple","banana","orange"]
for fruit in fruits:
print(fruit)
# 결과
>> "apple"
>> "banana"
>> "orange"
즉 for문은 list에 있는 값을 하나하나씩 가져오는 역할을 하며, 가져올 때 마다 어떤 행동을 취한다.
for 가져온것 in 가져올것들:
#가져올때마다할행동들
가져올것들에는 무조건 리스트가 들어가야하며, 가져온것에는 리스트에서 데이터들이 하나하나 들어가게 된다.
range()
for문에서 자주 사용되는 range()라는 함수가 있다. 이 함수는 숫자의 범위를 입력하면 자동으로 리스트를 만들어주는데, 말이 너무 복잡하니깐 실제 예제로 보자.
print(range(1)) #결과 [0]
print(range(3)) #결과 [0,1,2]
print(range(5) #결과 [0,1,2,3,4]
print(range(10)) # 결과 [0,1,2,3,4,5,6,7,8,9]
print(range(1,6)) # 결과 : [1,2,3,4,5]
print(range(10,16)) # 결과 : [10,11,12,13,14,15]
print(range(0,3)) #결과 : [0,1,2]
range(n)
함수에 값이 한개만 들어가면 0부터 그 숫자 전까지(예 : 5일때 [0,1,2,3,4]
) 리스트가 출력된다
range(start, end)
처럼 값이 2개가 들어가면 첫수부터 끝수-1까지의 숫자가 들어간 리스트(예 : range(1,5)=[1,2,3,4]
)가 만들어진다.
이를 주로 for문에서 사용되는데, 보통 ~번 반복할때 많이 사용된다.
for number in range(10):
print("나는 배트맨이다!!!")
# 결과 : "나는 배트맨이다!!!"가 10번 출력됨
아 물론 숫자를 이용해서 사용할 수 도 있다.
for number in range(10):
print(number)
# 결과 : 0부터 9까지 숫자가 차례차례로 각각 출력됨
예제들
이제 이것 저것 예제를 던져줘 보도록 할게요
# 예제 1 : n+n=?
for number in [1,2,3,4,5,6]:
print(str(number)+str(number)+"="+str(number+number))
# 결과
>> 1+1=2
>> 2+2=4
>> 3+3=6
>> 4+4=8
>> 5+5=10
>> 6+6=12
# 예제 2 : 1부터 10까지 다 더해보기
total = 0
for number in range(1,11);
total += number
print("1부터 10까지의 총합 :"+str(total))
#결과 : 1부터 10까지의 총합 : 55
# 예제 3: 별(*) 10개 찍기
for number in range(10);
print("*",end="") #팁 : end=""를 추가하면 출력할때마다 줄바꿈을 하지 않습니다!
#결과 : **********