SWEA 파이썬 프로그래밍 기초(1) 파이썬의 기본 구조와 기초 문법 #20


List, Tuple, 사전, 문자열과 같은 객체 항목들을 순회하며 특정 작업을 반복해서 수행하기 위해 사용

for 변수 in 순회할 객체:
  명령문1
  명령문2

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} : 정렬의 방향을 우측으로 하고 자리수는 2자리

tuple이 아니라 list여도 괜찮음

dan = int(input("단을 입력하세요.: "))
for i in range(1, 10, 1):
  print("{0} X {1} = {2:>2}".format(dan, i, dan * i))

  • range() 함수는 객체를 생성하는 코드
  • range([시작값], 종료값, [증감치])
    • 시작값은 범위에 포함, 종료값은 범위에 미포함
    • 종료값은 생략할 수 없으나, 시작값과 증감치는 생략 가능
    • 인자를 생략할 경우, 시작값의 default는 0, 증감치의 default는 1
# 모두 다 같은 결과를 내는 코드
range(0, 10, 1)
 
 
# 시작값(0) 생략
range(10, 1)
 
# 시작값(0), 증감치(1) 생략
range(10)
 
 
[결과]
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
  • 감소하는 range() 함수
range(10, -1, -2)
 
 
[결과]
10, 8, 6, 4, 2, 0

  • 사전(Dictinary) 객체를 이용한다.

dogs = {1: "골든리트리버", 2: "진돗개", 3: "보더콜리"}
 
for key in dogs:
  print("{0} : {1}".format(key, dogs[key]))
 
 
[결과]
1 : 골든리트리버
2 : 진돗개
3 : 보더콜리

dogs = {1: "골든리트리버", 2: "진돗개", 3: "보더콜리"}
 
for key, value in dogs.items(): # <class 'dict_items'> 객체 사용
  print("{0} : {1}".format(key, value))
  # 변수 key와 변수 value에 key 정보와 value 정보를 차례대로 대입 후 print() 함수 실행
 
 
[결과]
1 : 골든리트리버
2 : 진돗개
3 : 보더콜리

str = "Star"
 
for c in str:   # Star 를 구성하는 문자 각각이 해당 cycle의 c가 됨
  print("{0}".format(c))  # 문자열의 항목을 변수 c에 대입하고 print() 함수 호출
 
 
[결과]
S
t
a
r

scores = [100, 95, 88, 98]
total = 0
 
for score in scores:
  total += score
 
print("총점 : {0}".format(total))
 
 
[결과]
총점 : 381

for문 안에 또 다른 for문이 들어있는 형태

for 변수1 in 순회할 객체1:
  for 변수2 in 순회할 객체2:
    명령문1
    명령문2
    명령문3

dan = range(2, 10)
num = range(1, 10)
 
for i in dan:
  for k in num:
    print("{0} X {1} = {2:>2}".format(i, k, i * k))
    if k == 9:  # True일 경우 각 단 사이에 공백행을 추가하기 위한 구문
      print()

dan = range(2, 10)
num = range(1, 10)
 
for i in dan:
  for k in num:
    print("{0} X {1} = {2:>2}".format(i, k, i * k))
  print()   # 안쪽 for문이 완료되면 바로 print() 함수 호출

bool 값을 반환하는 조건식의 결과에 의해 반복 결정 조건식이 False 값을 반환해요 while문의 반복이 중지되므로 무한반복 방지 고려 필요

while 조건식 :
  명령문1
  명령문2
  명령문3

dan = int(input("단을 입력하세요: "))
i = 1
 
while i < 10:   # i가 10일 경우 False를 반환하며 while문 종료
  print("{0} X {1} = {2:>2}".format(dan, i, dan * i))
  i += 1  # 변수 i의 값을 1씩 증가시킴으로써 전체 while문 제어

scores = [100, 95, 88, 98]  # 리스트형으로 4개의 점수 저장
total = 0
cnt = len(scores)   # scores 리스트 내의 항목의 개수
i = 0
 
while i < cnt:
  total += score[i]
  i += 1
 
print("총점 : {0}".format(total))
 
 
[결과]
총점 : 381

  • for문 : 순회할 객체의 마지막 항목까지 반복
  • while문 : bool 값을 반환하는 조건식이 False를 반환할 때까지 반복
  • break문 : 논리적으로 반복문을 탈출
  • continue문 : 이후 코드는 건너뛰고 반복문을 계속 실행

예시. 사용자의 입력값이 문자열 "q"이면 반복문을 빠져나오는 코드

answer = ""   # 변수 answer는 공백 문자열("")로 초기화
 
while True:
  answer = input("명령을 입력하세요.\n'q'를 입력하면 프로그램이 종료됩니다. : ")
  if answer == "q":
    break
  print("'{0}'를 입력하셨습니다.".format(answer))
 
print("프로그램을 종료합니다...")
 
 
[결과]
명령을 입력하세요.
'q'를 입력하면 프로그램이 종료됩니다. : a
'a'를 입력하셨습니다.
'q'를 입력하면 프로그램이 종료됩니다. : c
'c'를 입력하셨습니다.
'q'를 입력하면 프로그램이 종료됩니다. : q
프로그램을 종료합니다...

예시. 1부터 10까지 저장되어 있는 리스트 객체에서 3의 배수를 제외한 합을 구하는 코드

numlist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
total = 0
 
for n in numlist:
  if n % 3 == 0:
    continue  # 해당 n 사이클에 대한 코드 진행 종료
  total += n
 
print("3의 배수를 제외한 총합: {0}".format(total))
 
 
[결과]
3의 배수를 제외한 총합: 37

[결과1]
*
**
***
****
 
[결과2]
*
**
***
****
*
**
***
****
 
[결과3]
     *
    ***
   *****
  *******
 *********
***********

# 문제 1
for i in range(1, 5):
    print(i * "*")
 
# 문제 2
for i in (0, 1):
    for j in range(1, 5):
        print(j * "*")
 
# 문제 3.1. for문
for i in range(1, 12, 2):
    print("{0:^11}".format(i * "*"))
 
# 문제 3.2. while문
i = 1
while i <= 11:
  print("{0:^11}".format(i * "*"))
  i += 2

# -*- coding: utf-8 -*-
# star.py
 
# Step 1.1. for문
for i in range(1, 5):
  print("*" * i)
 
# Step 1.2. while문
i = 1
while i <= 4:
  print("*" * i)
  i += 1
 
 
# Step 2.1. for문
for i in range(1, 3):
  for k in range(1, 5):
    print("*" * k)
 
# Step 2.2. while문
i, k = 1, 1
 
while i <= 2:
  while k <= 4:
    print("*" * k)
    k += 1
  i += 1
  k = 1   # 내부 루프를 마치면 외부 루프의 cnt를 하나 늘리고 내부 루프의 cnt 초기화
 
 
# Step 3.
i = 5   # 공백의 크기
k = 1   # 별의 개수
 
i = 1
while i >= 0:
  print("{0}{1}".format(" " * i, "*" * (2 * k - 1)))
  i -= 1
  k += 1