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