7강 반복구조
1. 반복 구조의 정의
반복 구조의 개념
-특정 영역의 명령문을 여러번 실행하는 구조
-반복 횟수를 조건에 따라 결정
반복 출력 프로그램
-5번 문자를 반복하는 코드
-조건에 따른 반복
반복구조의 구문형식
-시퀀스: 계수 제어 반복 구조에서 특정 반복 횟수와 반복 시 계수의 값을 정하기 위해 사용하는 데이터 타입
-구문형식: 조건 제어 반복
조건 제어 반복
while 반복-계속=조건:
코드블록
계수 제어 반복
for 계수-제어-변수 in 시퀀스:
코드블록
반복 구조의 실행흐름
-조건 제어 반복
반복-계속-조건 => (T) => 명령블록 => F => done
반복 출력 프로그램
count = count + 1 (증감연산자 파이썬 X)
반복구조의 공포
sentinal - 반복문 판별
n까지 합 계산 프로그램
-1부터 사용자가 입력한 값 n까지 합을 구하는 프로그램을 작성하시오
반복 구조 설계 전략
1) 명령블록
2) 반복구조
3) 반복-계속-조건
반복 구조 설계 전략 적용
1) sum = sum + i
2) while True:
sum = sum + i
3)sum = 0 #초기화
i = 1
last = input("어디까지 더할까요?: ")
while i <= last:
sum = sum + 1
i = i +1
구구단 출력 프로그램
-사용자가 입력한 단의 구구단 출력
==================
2. 리스트
원뿔 계산 프로그램 개선
반지름은 10이고 높이가 1, 5, 14, 26, 31인 원뿔의 부피와 겉넓이를 각각 출력하시오
부피 = 1/3 * 3.14r ** 2 * h
겉넓이= 3.14 * rad ** 2 + 3.14 * rad * hei)
리스트의 개념
-순서화된 값의 집합체를 저장할 수 있는 데이터 타입
-단일 식별자로 연속된 저장 공간 접근 수단 제공
-개별 원소의 값을 수정, 추가, 삭제 가능
-원소의 나열을 저장할 수 있는 시퀀스 타입중 하나
-리스트, 세트, 투플, 딕셔너리 등
리스트의 구성
-원소들의 순서를 표현
rad = 20
hei = 30
일반적인 변수
hei_list 1, 5, 14 ... 31
참조변수와 리스트 객체
객체지향 프로그램에서 모든 것들을 객체라고 지칭함
리스트의 생성
구문형식
list([원소 시퀀스])
간결화 - [원소 시퀀스]
-인용부호 []를 사용하여 표현
-원소는 콤마로 나열
-숫자 문자 같이 들어갈 수 있음
인덱스 연산자 hei_list[i]
-시퀀스 타입의 원소에 접근하는 연산자
-접근 연산자 [n] 사용(0부터 시작)
-원소에 부여된 인덱스 번호로 지칭
계수 제어 반복의 사용
구문형식
for 계수-제어-변수 in 시퀀시
코드블록
-계수-제어 변수와 시퀀스 사용
-반복 시 계수-제어-변수에 시퀀시의 원소
hei_list = [1, 4, 14, 26, 31]
for hei in hei_list :
print(hei)
===========================
3. 반복 구조의 확장
원뿔 계산 프로그램 개선 2
-반지름과 높이가 (10, 1), (20, 5), (30, 14)인 원뿔의 부피와 겉넓이를 각각 출력하시오
for rad, hei in zip(rad_list, hei_list):
리스트 생성 자동화
-리스트 내 원소에 구칙성이 있는 경우 생성 자동화를 위한 함수 사용 가능
range(a, b, k)
-a부터 b보다 작은 값까지 k씩 증가시켜 시퀀스 생성
-k값 생략 시 기본값 1
range 함수의 사용
ramge(1, 100, 1) == range(1, 100)
반복 출력 프로그램 개선
- 계수제어반복 사용
- 5번 프린트
count = 1
for count in range(1, 6)
구구단 출력 프로그램 개선
구구단 전체 테이블 만들기
print(format(i * j,">4d"), end="")
중첩 반복 구조
-반복 구조 내 다른 반복구조를 내포한 형식
-구문형식
for 계수-제어-변수1 in시퀀스1:
for 계수-제어-변수2 in시퀀스2:
명령 블록
실행흐름
계수-제어-변수1 -> T -> 계수-제어-변수2 -> T -> 명령 블록 -> F일때 종료
format 함수
-데이터를 양식에 맞춰 형식화
format("구구단표", ">10s") == format(변경 대상 데이터, 형식 지정자)
-형식지정자: >(정렬방향) 필드폭 s(데이터 타입 d정수, s문자열)
formar 함수의 사용
-문자열 형식: 문자 타입은 왼쪽 정렬이 기본
formar("구구단표", ">10s")
[1][2][3][4][5][6][7구][8구][9단][10표]
-정수 형식: 정수 타입은 오른쪽 정렬이 기본
formar(1234, "<10d")
[1=1][2=2][3=3][4=4][5][6][7][8][9][10]
중첩 반복 구조의 공포의 예
for i range (1000) :
for j in \range(1000) :
for k in range (1000) :
i * j * k