본문 바로가기
우당탕탕 학교생활/_방송통신대학교

방송통신대학교 프라임칼리지 파이썬(Python) 아홉번째 시간 리뷰

by J-2n 2020. 8. 26.

저번주는 멘탈적으로나 시간적으로 여유가 없었다..

그렇게 해서 강의는 쌓여있었고 운좋게도 재택근무를 하게되었지만

카페파는 집에서 집중이 잘 안됩니다 흑흑

노트북이 켜져있었더니 강의 본 시간이 4000분이 넘는다 덜덜


제어구조의 종류

특정 영역의 명령문을 여러 번 반복하는 구조

조건에 따라 반복 횟수를 결정

반복문

- 계수 제어 반복(for)

- 조건 제어 반복(while)


for 문 형식

구문형식

for 계수-제어-변수 in 시퀀스

명령문(들)


시퀀스의 사용

range(a, b, k) 함수

- a부터 b보다 크거나 같지 않은 값까지 k씩 증가시켜 만들어진 시퀀스 생성

range(1, 100)

1~99(100보다 작은값까지)

range(1000)

0~999(기본값0이 되고, 1000보다 작은 999까지

range(10, 200, 5)

10 15 20 ... 195(10부터 200보다 작은 값에서 5씩 증가시킨다)

range(1000, 0 , -1)

1000 999 ... 3 2 1


구구단 출력

사용자가 입력한 단에 대한 구구단을 출력하는 프로그램을 작성하시오.


소스 코드

#사용자 입력

level = eval(input("몇단을 출력할까요? "))


#결과값 출력

for i in range(1, 10) :

    print(i * level, end = ' ')


중첩 루프 형식

구문형식

for 계수-제어-변수 in 시퀀스1

for 계수-제어-변수2 in 시퀀스2

명령문(들)


구구단표

구구단표를 출력하는 프로그램을 작성하시오.


소스 코드

print(format("구구단표", ">20s"))

print (" |", end='') #숫자 표머리를 출력한다

for j in range(1,10) :

    print("  ", j, end='')

print() #새로운 행에서 시작한다.

print("------------------------------------------------")


for i in range(1, 10) :

    print(i , "|", end = '' )

    for j in range(1, 10) :

        #곱셈 결과를 출력하고 정렬한다.

        print(format(i * j, '4d'), end='')

    print() #새로운 행에서 시작한다.


break

현재의 루프를 중단하는 키워드


비 효율적 소스 코드

n = eval(input("정수를 입력하세요 : "))


isPrime = True

for i in range(1, n) :

    if n % i == 0 :

        isPrime = False


if isPrime :

    print(str(n) + "은 소수입니다.")

else :

    print(str(n) + "은 소수가 아닙니다.")


continue

현재의 반복을 중단하는 키워드


소스 코드

#사용자 입력

n = eval(input("정수를 입력하세요 : "))


sum = 0


for i in range(1, n+1) :

    if i % 4 ==0 :

        continue

    sum+= i


print("4의 배수를 제외한", n, "까지의 합은", sum, "입니다.")


소수 찾기

첫 50개의 소수 찾기


소스 코드

NUMBER_OF_PRIMES = 50

NUMBER_OF_PRIMES_PER_LINE = 10

count, number = 0, 2


print("첫 50개의 소수")


while count < NUMBER_OF_PRIMES :

    isPrime = True

    divisor = 2

    while divisor <= number / 2:

        if number % divisor ==0:

            isPrime = False

            break

        divisor += 1

    if isPrime :

        count += 1


        print(format(number, '5d'), end= '')

        if count % NUMBER_OF_PRIMES_PER_LINE == 0 :

            print()

    number +=1


완전수 찾기

10,000 이하의 모든 완전수를 찾는 프로그램을 작성하시오.


완전수

자기 자신을 제외한 모든 양의 약수를 더했을 때 자기 자신이 되는 양의 정수


소스 코드

for number in range(2, 10000 + 1) :

    sum = 0

    divisor = number - 1

    while divisor >= 1 :

        if number % divisor ==0 :

            sum += divisor


        divisor -= 1


    if number == sum :

        print(number, end = " ")


실행 결과

6 28 496 8128


삼각 패턴 수

소스 코드

import turtle


x = -100

y = 100


line = " "

for i in range(1, 12) :

    for j in range(1, i) :

        line += str(j) + " "


    turtle.penup()

    turtle.goto(x,y)

    turtle.pendown()

    turtle.write(line, font = ("맑은 고딕", 18, "bold"))


    line = ""

    y -= 20


turtle.hideturtle()

turtle.done()


실행 결과


정리하기 (출처 : 한국방송통신대학교 프라임칼리지)

1. 반복문에는 두 종류, while 루프와, for 루프가 있다.

2. for 루프는 계수 - 제어 루프이고 루프 몸체를 예상할 수 있는 횟수만큼 실행하는데 사용된다.

3. 두 키워드 break와 continue는 루프에 사용된다.

4. break 키워드는 break를 포함하는 가장 내부의 루프를 즉시 종료시킨다.

5. continue 키워드는 현재의 반복만을 종료시킨다.


100%를 향해