for 문
- 리스트, 튜플, 사진, 문자열과 같은 객체 항목들을 순회하며 특정 작업을 반복해서 수행하기 위해 사용
for 문의 문법
for 변수 in 순회할 객체: # 순회할 객체의 첫번째 항목부터 마지막 항목까지 차례로 변수에 대입
명령문1
명령문2
✨ ex. 구구단의 경우 한줄 한줄 일일이 코드를 짤 수 있으나, but 코드 상에 많은 중복이 나타나고 변경사항 발생시 수정사항이 많아짐
→ 코드의 중복된 부분을 찾아 반복문 안에서 처리하는 명령문으로 바꿔 해결!
dan = int(input("단을 입력하세요: "))
for i in (1,2,3,4,5,6,7,8,9):
print("{0} x {1} = {2:>2}".format(dan, i, dan * i)) # >2 정렬의 방향을 우측으로 하고 자릿수는 2자리로 함
dan = int(input("단을 입력하세요: "))
for i in range(1, 10, 1):
print("{0} x {1} = {2:>2}".format(dan, i, dan * i)) # 위 코드와 동일함.
1 range(0, 10, 1) # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
2 range(10, 1) # 첫 번째(0) 인자 생략
3 range(10) # 첫 번째(0), 세 번째(1) 인자 생략
4 range(1, 10, 2) # 1, 3, 5, 7, 9
5 range(10, -1, -2) # 10, 8, 6, 4, 2, 0
dogs = {1: "골든리트리버", 2: "진돗개", 3: "보더콜리"}
for key in dogs:
print("{0} : {1}".format(key, dogs[key]))
for key, value in dogs.items(): # <class 'dict_items'> 객체 활용
print("{0} : {1}".format(key, value))
[결과]
1 : 골든리트리버
2 : 진돗개
3 : 보더콜리
str = "Python"
for c in str:
print("{0}".format(c))
[결과]
P
y
t
h
o
n
scores = [100, 95, 88, 98] # 리스트형으로 4개의 점수를 저장
total = 0 # 총점 초기화
for score in scores:
total += score
print("총점: {0}".format(total))
[결과]
총점 : 381
중첩된 for 문
- for 문 안에 또 다른 for 문이 들어있는 형태
중첩된 for 문의 문법
- 순회할 객체1의 항목수 x 순회할 객체2의 항목수 만큼 반복문이 실행됨
for 변수1 in 순회할 객체1:
for 변수2 in 순회할 객체2:
명령문1
명령문2
...
dan = range(2, 10) # range 객체로 2~9 정수 값을 항목으로 가짐
num = range(1, 10) # range 객체로 1~9 정수 값을 항목으로 가짐
for i in dan:
for k in num:
print("{0} x {1} = {2:>2}".format(i, k, i * k))
if k == 9: # True일 경우 각 단 사이에 공백 라인을 출력하기 위한 코드
print()
for i in dan:
for k in num:
print("{0} x {1} = {2:>2}".format(i, k, i * k))
print() # 위와 동일한 코드
[결과]
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
3 x 1 = 3
3 x 2 = 6
...
while 문
- bool 값을 반환하는 조건식의 결과에 의해 반복 결정
- 조건식이 False 값을 반환해야 while 문의 반복이 중지되므로 무한반복의 방지를 고려해야 함
while 문의 문법
while 조건식:
명령문1
명령문2
...
dan = int(input("단을 입력하세요: "))
i = 1
while i < 10: # i가 10일 경우 False를 반환하면서 while문이 종료됨
print("{0} x {1} = {2:>2}".format(i, k, i * k)) # :>2 정렬방향 우측, 자릿수는 2자리
i += 1 # 변수 i에 대해 반복이 일어날 때마다 1씩 증가시키는 문장이 없다면 무한루프에 빠짐
scores = [100, 95, 88, 98] # 리스트형으로 4개의 점수 저장
total = 0 # 총점 변수 초기화
cnt = len(scores)
i = 0 # 첫 번째 항목의 위치(인덱스)를 나타내는 0을 저장
while i < cnt:
total += scores[i]
i += 1
print("총점: {0}.format(total))
[결과]
총점: 381
for 문 : 순회할 객체의 마지막 항목까지 반복
while 문 : bool 값을 반환하는 조건식이 False를 반환할 때까지 반복
break 문 : 논리적으로 반복문을 빠져나갈 때 사용
continue 문 : 이후 코드는 건너뛰고 반복문을 계속 실행할 때 사용
answer = "" # 변수 answer는 공백 문자열("")로 초기화
while True:
answer = input("명령을 입력하세요.\n'q'를 입력하면 프로그램이 종료됩니다. : ")
if answer == "q":
break # 'q' 입력시 while 문에서 벗어남
print("'{0}'를 입력하셨습니다.".format(answer))
print("프로그램을 종료합니다...")
[결과]
명령을 입력하세요.
'q'를 입력하면 프로그램이 종료됩니다. : q
프로그램을 종료합니다...
answer = ""
while True:
answer = input("명령을 입력하세요.\n'q'를 입력하면 프로그램이 종료됩니다. : ")
if answer == "q":
break
print("'{0}'를 입력하셨습니다.".format(answer))
print("프로그램을 종료합니다...")
[결과]
명령을 입력하세요.
'q'를 입력하면 프로그램이 종료됩니다. : a
'a'를 입력하셨습니다.
numlist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
total = 0 # 총합을 저장할 변수 초기화
for n in numlist:
if n % 3 == 0: # n의 값이 3의 배수인지 검사하기 위해 나머지(%) 연사자 사용
continue # n의 값이 3의 배수일 때 : 나머지 블록은 건너뛰고 for 문으로 제어를 옮김
total += n # n의 값이 3의 배수가 아닐 때 : 변수 total에 값을 누적
print("3의 배수를 제외한 총합: {0}".format(total))
[결과]
3의 배수를 제외한 총합: 37
해당 포스팅은 아래의 사이트를 참고하여 작성하였습니다.
SW Expert Academy https://swexpertacademy.com/