for 문에서 변수는 작업되는 배열의 item을 가리킨다.
string, list, tuple 같은 배열의 요소를 '순차적으로' 가리킨다.
(string은 배열은 아니고 '열'이기 때문에 ['s','t','r','i','n','g']같으로 될 수 있다.)
간단한 응용의 예시를 들어보겠다.
list = ['1','2','3','4']
for k in list:
print(k)
# 1
2
3
4
먼저 ['1','2','3','4']의 첫 번째 요소인 '1'이 k 변수에 대입된 후 print(k)를 수행한다.
그다음 두 벉째 요소인 '2'가 k 변수에 대입된 후 print(k)를 수행한다.
아렇게 list 의 마지막 요소까지 이과정을 반복한다.
for문으로 학생들의 성적의 합격여부를 확인하는 응용.
#result는 각 학생의 성적리스트.
result = [61,90,31,51]
number = 0
for stu in result:
number = number + 1
if stu >= 60:
print(f"{number}번 학생은 합격입니다")
else:
print(f"{number}번 학생은 불합격입니다")
만약 합격한 학생한테만 축하메시지를 보내고 싶다면 continue를 사용하면 된다.
result = [61,90,31,51]
number = 0
for stu in result:
number = number + 1
if stu < 60:
continue
print(f'{number}번 학생 축하드려요, 합격입니다.')
#1번 학생 축하드려요, 합격입니다.
#2번 학생 축하드려요, 합격입니다.
그리고 range함수도 for문과 함께 자주 사용한다.
ao = range(5)
for ct in ao:
print(ct)
#
0
1
2
3
4
ti = range(2,5)
for je in ti:
print(je)
#
2
3
4
range(5)는 0 부터 5 미만의 숫자를 포함하는 range객체를 만들어준다.
시작과 끝 숫자를 지정하려면 range(시작 숫자, 끝 숫자) 형태를 사용하면 된다. 이때 끝 숫자는 포함되지 않는다.
for와 range함수를 이용하면 1부터 15까지 더하는 것을 쉽게 구할 수 있다.
v = 0
for add in range(1,16):
v = v + add
print(v)
# 150
range(1,16)은 숫자1부터 15까지(1이상 16미만)의 숫자를 가진 객체이다.
따라서 위의 예에서 변수 v에 1부터 15까지 하나씩 차례로 대입되면서 v = v + add 를 반복적으로 수행하고 v는 최종적으로
숫자1부터 15까지의 합인 150으로 된다.
for와 range를 이용해서 우에서 작성한 '60점 이상인 학생들에게 축하메시지 보내기.'예제도 다르게 작성할 수 있다.
result = [90,71,37,53,65]
for number in range(len(result)):
if result[number] < 60:
continue
print(f'{number+1}번 학생, 축하드립니다.')
for 와 range 함수를 이용하여 구구단도 출력할 수 있다.
for i in range(1,10):
for j in range(1,10):
print(i*j, end = ' ')
print(' ')
#
1 2 3 4 5 6 7 8 9
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
1)첫번째 for 문에서 1부터 9까지의 숫자(range(1,10))가 차례대로 i에 대입된다.
2)i가 첫번째 순서, 즉 숫자 1일때 두번째 for문을 만나게된다.
3)2번 for 문에서 1분터 10까지의 숫자(range(1,10))가 j에 대입되고 그다음 문장 print(i*j)를 수행한다.
+여기서 print(i*j, end = ' ' )와 같이 매개변수 end를 추가한 이유는 해당 결괏값을 출력할 때 다음줄로 넘기지 않고 그 줄에 계속 출력하기 위함이다.
+그다음에 이어지는 print(' ' )는 2번 for문이 끝나면 결괏값을 다음 줄부터 출력하게 해주기 위함이다.
리스트 내포 사용하기.
리스트 안에 for문을 포함하는 리스트 내포(List comprehension)을 사용하면 좀 더 편리하고 직관적인 프로그램을 만들 수 있다.
list = [7,'lck',57,'15']
sec_list = []
for num in list:
sec_list.append(num)
print(sec_list)
# [7,'lck',57,'15']
리스트 내포를 사용하면 우의 예제를 이렇게 간단하고 직좐적으로 만들 수 있다.
list = [7,'lck',57,'15']
sec_list = [num for num in list]
print(sec_list)
# [7,'lck',57,'15']
이렇게 if문도 추가할 수 있다.
list = [7,'lck',57,'15']
sec_list = [num for num in list if type(num) ==int ]
print(sec_list)
# [7,57]
for문, while의 차이점은 뭘까, 다음에 적어보자.