[Python 로직과 순서도] 03.반복구조 (정답)
연습문제
예제18
while 반복문을 사용해서 숫자 1부터 10까지 출력하세요(1)
1부터 시작되는 변수 i 를, 10보다 작거나 같을때까지 반복하며 i 값을 출력합니다.
출력할때마다 변수 i 값을 1씩 증가되도록 합니다.
분석 (설명)
변수 i 에 숫자 1을 할당합니다.
- 변수 i 가 10이하인지 판별합니다.
- 변수 i 값을 출력합니다.
- 변수 i 값을 1 증가시킵니다.
설계 (순서도)
구현
i=1
while i<=10:
print(i, end=" ")
i = i+1
# 실행결과
# 1 2 3 4 5 6 7 8 9 10
예제19
for 반복문을 사용해서 숫자 1부터 10까지 출력하세요(1)
1부터 시작되는 변수 i 를, 10보다 작거나 같을때까지 반복하며 i 값을 출력합니다.
출력할때마다 변수 i 값을 1씩 증가되도록 합니다.
분석 (설명)
변수 i 에 숫자 1을 할당합니다.
- i 값이 1부터 1씩 증가하며 10이 될 때까지 반복합니다.
설계 (순서도)
구현 (소스코드)
for i in range(1, 11):
print(i, end=" ")
# 실행결과
# 1 2 3 4 5 6 7 8 9 10
예제20
반복문을 사용해 숫자 10부터 1까지 출력하세요
i가 10부터 1씩 감소하며 1이 될 때까지 반복하며 i 값을 출력한다.
분석 (설명)
변수 i 에 숫자 1을 할당합니다.
- i 값이 10부터 1씩 감소하며 1이 될 때까지 반복합니다.
설계 (순서도)
구현 (소스코드)
for i in range(10, 0, -1):
print(i, end=" ")
# 실행결과
# 10 9 8 7 6 5 4 3 2 1
예제21
숫자 1부터 100까지의 합 구하세요.
0으로 초기화되어 있는 변수 sum에 숫자 1부터 100까지 1씩 증가하는 i 값을 계속 더해 1부터 100까 지의 합을 구합니다.
분석 (설명)
- sum을 0으로 초기화한다.
- i 값이 1부터 1씩 증가하며 100이 될 때까지 반복한다.
- sum에 i 값을 누적한다.
설계 (순서도)
구현 (소스코드)
sum = 0
for i in range(1, 101):
sum = sum+i
print(sum)
# 실행결과
# 5050
예제22
1부터 100까지의 수 중 짝수의 합 구하기(1)
i가 2부터 2씩 증가하며 100이 될 때까지 반복하며 sum에 i 값을 누적합니다.
분석 (설명)
- i 값이 2부터 2씩 증가하며 100이 될 때까지 반복한다.
- sum에 i 값을 누적한다.
설계 (순서도)
구현 (소스코드)
sum = 0
for i in range(2, 101, 2):
sum = sum+i
print(sum)
# 실행결과
# 2550
예제23
1부터 100까지의 수 중 짝수의 합 구하기(2)
i가 1부터 1씩 증가하며 100이 될 때까지 반복하며 i가 짝수인 경우 sum에 i 값을 누적한다.
i를 2로 나눈 나머지가 0이면 i는 짝수이다.
분석 (설명)
- i 값이 1부터 1씩 증가하며 100이 될 때까지 반복한다.
- i를 2로 나눈 나머지가 0인지 판별한다.
- 3 sum에 i 값을 누적한다.
설계 (순서도)
구현 (소스코드)
sum = 0
for i in range(1, 101):
if i%2==0:
sum = sum+i
print(sum)
# 실행결과
# 2550
예제24
1, -2, 3, -4, ..., 99, -100의 합 구하기
i가 1부터 1씩 증가하며 100이 될 때까지 반복하며 i가 홀수면 sum에 i 값을 더하고, i가 짝 수면 sum에서 i 값을 뺀다.
분석 (설명)
- i를 2로 나눈 나머지가 0인지 판별한다.
- i가 짝수면 sum에서 i 값을 뺀다.
- i가 홀수면 sum에 i 값을 더한다.
설계 (순서도)
구현 (소스코드)
sum = 0
for i in range(1, 101):
if i%2==0:
sum=sum-i
else:
sum=sum+i
print(sum)
# 실행결과
# -50
예제25
계승 구하기
계승이란 1부터 임의의 양의 정수 n까지의 수를 모두 곱한 것을 말하며 n!로 나타낸다.
예를 들어 5의 계승은 5!로 표시하며 1*2*3*4*5 이다. 그런데, 여기서 0!은 1로 정의한다.
5!은 1로 초기화되어 있는 변수 fact에 5부터 1까지 1씩 감소하는 i 값을 곱해 구한다.
분석 (설명)
- fact를 1로 초기화한다.
- i 값이 5부터 1씩 감소하며 1이 될 때까지 반복한다.
- fact에 i를 곱한 값을 fact에 저장한다.
설계 (순서도)
구현 (소스코드)
fact = 1
for i in range(5, 0, -1):
fact = fact*i
print(fact)
# 실행결과
# 120
예제26
약수 구하기
임의의 수를 나누었을 때 나누어떨어지게 하는 수를 약수라 한다.
즉, n의 약수는 1부터 n까지의 수로 n을 나누어떨어지게 하는 수가 된다.
예를 들면, 10의 약수는 1부터 10까지 수들로 나누었을 때 나머지가 0이 되게 하는 수, 즉 1, 2, 5, 10이 된다.
분석 (설명)
- i 값이 1부터 1씩 증가하며 n이 될 때까지 반복한다.
- n을 i로 나눈 나머지가 0인지 판별한다.
- n의 약수인 i를 출력한다.
설계 (순서도)
구현 (소스코드)
n = int(input("정수: "))
for i in range(1, n+1):
if n%i == 0:
print(i, end=" ")
# 실행결과
# 정수: 30
# 1 2 3 5 6 10 15 30
예제 27
공약수 구하기
공약수란 0이 아닌 두 정수의 공통되는 약수를 말한다. 즉, 두 정수를 나누어떨어지게 하는 공통의 수를 의미한다.
n1과 n2의 공약수는 1부터 n1까지 1씩 증가하는 i로 n1과 n2 모두를 나누어떨어지게 하는수가 된다.
단, n1이 n2보다 작다고 가정한다.
분석 (설명)
- i 값이 1부터 1씩 증가하며 n1이 될 때까지 반복한다.
- n1을 i로 나눈 나머지가 0이고 n2를 i로 나눈 나머지가 0인지 판별한다.
- 공약수 i를 출력한다.
설계 (순서도)
구현 (소스코드)
n1 = int(input("정수: "))
n2 = int(input("정수: "))
for i in range(1, n1+1):
if n1%i == 0 and n2%i == 0:
print(i, end=" ")
# 실행결과
# 정수: 10
# 정수: 20
# 1 2 5 10
예제 28
최대공약수 구하기
두 정수의 공약수 중 가장 큰 것을 최대공약수라 한다.
그러므로 n1과 n2의 최대공약수는 n1부터 1까지 1씩 감소하는 i로 n1과 n2 모두를 나누어떨어지게 하는 첫 번째 수가 된다. 단, n1이 n2보다 작다고 가정한다.
분석 (설명)
- i 값이 n1부터 1씩 감소하며 1이 될 때까지 반복한다.
- n1을 i로 나눈 나머지가 0이고 n2를 i로 나눈 나머지가 0인지 판별한다.
- 최대공약수 i를 출력하고 반복 구조를 빠져나온다.
설계 (순서도)
구현 (소스코드)
n1 = int(input("정수: "))
n2 = int(input("정수: "))
for i in range(n1, 0, -1):
if n1%i==0 and n2%i==0:
print(i)
break
# 실행결과
# 정수: 12
# 정수: 16
# 4
예제 29
소수 판별하기
소수란 2, 3, 5, 7, …과 같이 1과 자기 자신 이외의 양의 약수를 가지지 않는 1보다 큰 자연수를 말한다.
수 | 약수 | 소수판별 |
2 | 1,2 | O |
3 | 1,3 | O |
4 | 1,2,4 | X |
5 | 1,5 | O |
6 | 1,2,3,6 | X |
7 | 1,7 | O |
임의의 수를 2부터 자기 자신보다 1 작은 수까지의 수로 차례로 나누어서 나누어떨어지는 경우가 생기면 소수가 아니고, 나누어떨어지는 경우가 생기지 않으면 소수이다.
분석 (설명)
- i 값이 2부터 1씩 증가하며 n-1이 될 때까지 반복한다.
- n을 i로 나눈 나머지가 0인지 판별한다.
- chk에 0을 저장하고 반복 구조를 빠져나온다.
- chk가 1인지 판별한다.
설계 (순서도)
구현 (소스코드)
chk = 1
n = int(input("정수: "))
for i in range(2, n):
if n%i == 0:
chk = 0
break
if chk==1:
print(n, ": 소수임")
else:
print(n, ": 소수아님")
# 실행결과
# 정수: 7
# 7 : 소수임
예제30
피보나치수열 구하기
다음과 같은 수열이 있다.
1 1 2 3 5 8 13 21 34 55 …
이 수열의 "두 번째 항" 이후의 항들은 "이전의 두 항"을 더해 구해진다.
즉, 첫 번째 항과 두번째 항을 더한 값이 세 번째 항이 되고, 두 번째 항과 세 번째 항을 더한 값이 네 번째 항
이 된다. 이와 같은 수열을 피보나치수열이라 한다.
피보나치수열을 구하는 과정은 다음과 같다.
전전 항을 저장하는 변수를 a, 전 항을 저장하는 변수를 b, 현재 항을 저장하는 변수를 c라 하고, a에 첫 번째 항인 1을, b에 두 번째 항인 1을 저장하고 시작한다. 현재 항 c는 a 값과 b 값을 더한 값이 된다. 그 후 전 항 b값을 a에, 현재 항 c 값을 b에 저장하고 현재 항 c를 새롭게 구하는 과정을 반복하며 피보나치수열을 구한다.
분석 (설명)
- i 값이 3부터 1씩 증가하며 20이 될 때까지 반복한다.
- 전전항 a와 전항 b를 더해 현재항 c에 저장한다.
- 현재항 c 값을 출력한다.
- 전항 b 값을 전전항 a에 저장한다.
- 현재항 c 값을 전항 b에 저장한다.
설계 (순서도)
구현 (소스코드)
a = 1
b = 1
print(a, b, end=" ")
for i in range(3, 21):
c = a+b
print(c, end=" ")
a = b
b = c
# 05 전전항 a와 전항 b를 더한 값을 현재항 c에 저장한다.
# 07~08 전항 b 값을 a에 저장하고 현재항 c 값을 b에 저장한다.
# 실행결과
# 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
예제 31
최댓값 구하기
max 값과 새롭게 입력받은 a 값을 비교하여 큰 값을 max에 저장하는 동작을 반복하며 최댓값을 구한다
분석 (설명)
- a가 0이 아닌지 판별한다.
- a가 max보다 큰지 판별한다.
- a 값을 max에 저장한다.
설계 (순서도)
구현 (소스코드)
a = int(input("정수: "))
m = a
while a!=0:
if a>m:
m = a
a = int(input("정수: "))
print("최댓값 :", m)
#03~06 a가 0이 아닌 동안 04~06을 반복해서 실행한다.
#04~05 a가 m보다 크면 a 값을 m에 저장한다. m은 최댓값을 저장하는 변수이다.
# 실행결과
# 정수: 5
# 정수: 7
# 정수: 30
# 정수: 9
# 정수: 8
# 정수: 0
# 최댓값: 30
예제32
직각 삼각형 모양으로 수 출력하기
바깥쪽 반복문은 i 값을 1부터 5까지 반복하고, 안쪽 반복문은 j 값을 1부터 i까지 반복하며 j 값을 출력하면 다음과 같이 된다. 단, 안쪽 반복문을 마치면 “ \n”을 이용해서 다음 줄로 넘긴다.
분석 (설명)
- i 값이 1부터 1씩 증가하며 5가 될 때까지 반복한다.
- j 값이 1부터 1씩 증가하며 i가 될 때까지 반복한다.
- 다음 줄로 넘긴다.
설계 (순서도)
구현 (소스코드)
for i in range(1, 6):
for j in range(1, i+1):
print(j, end=" ")
print()
#01~02 i 값이 1부터 1씩 증가하며 5가 될 때까지 02~04를 반복해서 실행한다.
#02~03 j 값이 1부터 1씩 증가하며 i가 될 때까지 03을 반복해서 실행한다.
#04 다음 줄로 넘어간다.
예제33
1부터 10까지의 정수에 대한 약수 구하기
중첩 반복 구조를 이용해서 1부터 10까지의 정수에 대한 약수를 구한다.
약수를 구하는 방법은 예제 26에서 살펴보았다.
분석 (설명)
- i 값이 1부터 1씩 증가하며 10이 될 때까지 반복한다.
- i 값을 출력한다.
- j 값이 1부터 1씩 증가하며 i가 될 때까지 반복한다.
- i를 j로 나눈 나머지가 0인지 판별한다.
설계 (순서도)
구현 (소스코드)
for i in range(1, 11):
print(i, "약수:", end=" ")
for j in range(1, i+1):
if i%j==0:
print(j, end=" ")
print()
#01~06 i 값이 1부터 1씩 증가하며 10이 될 때까지 02~06을 반복해서 실행한다.
#03~05 j 값이 1부터 1씩 증가하며 i가 될 때까지 04~05를 반복해서 실행한다.
#출력결과
1 약수: 1
2 약수: 1 2
3 약수: 1 3
4 약수: 1 2 4
5 약수: 1 5
6 약수: 1 2 3 6
7 약수: 1 7
8 약수: 1 2 4 8
9 약수: 1 3 9
10 약수: 1 2 5 10
예제34
2부터 100까지의 소수 구하기
i가 2부터 1씩 증가하며 100이 될 때까지 반복하며 각 i 값이 소수인지 판별합니다.
소수를 판별하는 방법은 예제 29에서 살펴보았습니다.
아래 실행 결과와 같은 값을 출력하세요.
분석 (설명)
- i 값이 2부터 1씩 증가하며 100이 될 때까지 반복한다.
- chk에 1을 저장한다.
- j 값이 2부터 1씩 감소하며 i-1이 될 때까지 반복한다.
- i를 j로 나눈 나머지가 0인지 판별한다.
- 소수가 아니면 chk에 0을 저장한다.
- chk가 1인지 판별한다.
설계 (순서도)
구현 (소스코드)
for i in range(2, 101):
chk = 1
for j in range(2, i):
if i%j==0:
chk = 0
break
if chk==1:
print(i, end=" ")
#01~08 i 값이 2부터 1씩 증가하며 100이 될 때까지 02~08을 반복해서 실행한다.
#03~06 j 값이 1부터 1씩 증가하며 i-1이 될 때까지 04~06을 반복해서 실행한다.
#04~06 i를 j로 나눈 나머지가 0이면 chk에 0을 저장하고 break에 의해 안쪽 반복 구조를빠져 나와 07로 이동한다.
# 출력결과
# 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
예제35
1, (1+2), (1+2+3), …, (1+2+ … +10)의 합 구하기
i가 1부터 1씩 증가하며 10이 될 때까지 반복하며 n은 i 값을 누적하고, sum은 n 값을 누적하여 원하는 값을 구한다.
i | n | sum |
1 | 1 | 1 |
2 | 1+2 | 1+(1+2) |
3 | 1+2+3 | 1+(1+2)+(1+2+3) |
... | ... | ... |
9 | 1+2+3+…+8+9 | 1+(1+2)+(1+2+3)+…+(1+2+3+4+5+6+7+8+9) |
10 | 1+2+3+…+9+10 | 1+(1+2)+…+(1+2+3+4+5+6+7+8+9+10) |
분석 (설명)
- n에 i 값을 누적한다.
- sum에 n 값을 누적한다.
설계 (순서도)
구현 (소스코드)
n = 0
sum = 0
for i in range(1, 11):
n = n+i
sum = sum+n
print(sum)
#03~05 i 값이 1부터 1씩 증가하며 10이 될 때까지 04~05를 반복해서 실행한다.
# 실행결과
# 220
예제36
구구단
다음과 같은 형식으로 출력되는 구구단 순서도와 프로그램을 작성한다.
각 단에 해당하는 2부터 9까지의 수는 변수 i로, 곱하여지는 수 1부터 9까지는 변수 j로, 곱한결과는 j*j로 나타낸다.
2*1= 2 2*2= 4 2*3= 6 2*4= 8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18
3*1= 3 3*2= 6 3*3= 9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
...
9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
분석 (설명)
- i 값이 2부터 1씩 증가하며 9가 될 때까지 반복한다.
- j 값이 1부터 1씩 증가하며 9가 될 때까지 반복한다.
- i, j, i*j 값을 출력한다.
설계 (순서도)
구현 (소스코드)
for i in range(2, 10):
for j in range(1, 10):
print(i, "*", j, "=", i*j, end=" ")
print()
# 01~04 i 값이 2부터 1씩 증가하며 9가 될 때까지 02~04를 반복해서 실행한다.
# 02~03 j 값이 2부터 1씩 증가하며 9가 될 때까지 03을 반복해서 실행한다.
# 04 다음 줄로 넘긴다.
# 실행결과
# 2*1= 2 2*2= 4 2*3= 6 2*4= 8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18
# 3*1= 3 3*2= 6 3*3= 9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
# 4*1= 4 4*2= 8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36
# 5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45
# 6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54
# 7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63
# 8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72
# 9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
점프 투 파이썬
연습문제 (148페이지)
Q5. A 학급에 총 10명의 학생이 있다. 이 학생들의 중간고사 점수는 다음과 같다.
[70, 60, 55, 75, 95, 90, 80, 80, 85, 100]
for문과 while문 각각 사용하여 A 학급의 평균 점수를 구하는 문제를 만들어 보자.
아래는 for문의 예시다.
A = [70, 60, 55, 75, 95, 90, 80, 80, 85, 100]
total = 0
for score in A:
total += ??? # A학급의 점수를 모두 더한다.
average = ??? # 평균을 구하기 위해 총 점수를 총 학생수로 나눈다.
print (average)
과제
과제 13
5부터 15까지 출력하는 순서도와 파이썬 프로그램을 작성하세요.
while 반복문으로 만드세요.
설계 (순서도)
구현 (소스코드)
i = 5
while i<=15:
print(i, end=" ")
i = i+1
# 실행결과
# 5 6 7 8 9 10 11 12 13 14 15
과제 14
5부터 15까지 출력하는 순서도와 파이썬 프로그램을 작성하세요.
for 반복문으로 만드세요.
설계 (순서도)
구현 (소스코드)
for i in range(5, 16):
print(i, end=" ")
# 실행결과
# 5 6 7 8 9 10 11 12 13 14 15
5부터 15까지 출력하는 순서도와 파이썬 프로그램을 작성하세요.
while 반복문으로 만드세요.
과제 15
while형 반복 구조를 이용해서 10부터 1까지 출력하는 순서도와 파이썬 프로그램을 작성하여라.
설계 (순서도)
구현 (소스코드)
i = 10
while i>=1:
print(i, end=" ")
i = i-1
# 실행결과
# 10 9 8 7 6 5 4 3 2 1
과제 16
1부터 "입력받은 수"까지의 합을 출력하는 순서도와 파이썬 프로그램을 작성하여라.
설계 (순서도)
구현 (소스코드)
a = int(input("정수: "))
sum = 0
for i in range(1, a+1):
sum = sum+i
print(sum)
# 실행결과
# 정수: 10
# 55
과제 17
1부터 100까지의 수 중 3의 배수의 합을 출력하는 순서도와 파이썬 프로그램을 작성하여라.
hint) in range(3, 101, 3):
설계 (순서도)
구현 (소스코드)
sum = 0
for i in range(3, 101, 3):
sum = sum+i
print(sum)
# 실행결과
# 1683
과제 18
1부터 100까지의 수 중 3의 배수의 합을 출력하는 순서도와 파이썬 프로그램을 작성하여라.
hint) if i%3==0:
설계 (순서도)
구현 (소스코드)
sum = 0
for i in range(1, 101):
if i%3==0:
sum = sum+i
print(sum)
# 실행결과
# 1683
과제 19
1, 2, -3, 4, 5, -6, ..., -99, 100의 합을 구해 출력하는 순서도와 파이썬 프로그램을 작성하여라.
설계 (순서도)
구현 (소스코드)
sum = 0
for i in range(1, 101):
if i%3==0:
sum = sum-i
else:
sum = sum+i
print(sum)
# 실행결과
# 1684
과제 20
입력받은 숫자의 약수와, 약수의 개수를 출력하는 순서도와 파이썬 프로그램을 작성하여라.
설계 (순서도)
구현 (소스코드)
n = int(input("정수: "))
cnt = 0
for i in range(1, n+1):
if n%i == 0:
print(i, end=" ")
cnt = cnt+1
print(":", cnt)
# 실행결과
# 정수: 30
# 1 2 3 5 6 10 15 30 : 8
과제 21
세 수의 공약수를 출력하는 순 과제 서도와 파이썬 프로그램을 작성하여라.
설계 (순서도)
구현 (소스코드)
n1 = int(input("정수 : "))
n2 = int(input("정수 : "))
n3 = int(input("정수 : "))
for i in range(1, n1+1):
if n1%i==0 and n2%i==0 and n3%i==0:
print(i, end=" ")
# 실행결과
# 정수 : 300
# 정수 : 400
# 정수 : 256
# 1 2 4
과제 22
1부터 자기 자신까지의 수로 차례로 나누어서 나누어떨어지는 경우가 2번 발생하면 이 수는 소수이고, 그렇지 않으면 소수가 아니다. 이 방법을 이용해서 소수를 판별하는 순서도와 파이썬 프로그램을 작성하여라.
설계 (순서도)
구현 (소스코드)
n = int(input("정수: "))
cnt = 0
for i in range(1, n+1):
if n%i == 0:
cnt = cnt+1
if cnt==2:
print(n, ": 소수임")
else:
print(n, ": 소수아님")
# 실행결과
# 정수: 45
# 45 : 소수아님
과제 23
예제 30번을 참고하여,
피보나치수열의 20번째 항까지의 합을 구하는 순서도와 파이썬 프로그램을 작성하여라.
설계 (순서도)
구현 (소스코드)
a = 1
b = 1
sum = 2
for i in range(3, 21):
c = a+b
sum = sum+c
a = b
b = c
print(sum)
# 실행결과
# 17710
과제 24
최솟값을 구하는 순서도와 파이썬 프로그램을 작성하여라.
0을 입력하기 전까지 입력값을 받아 최소값을 구하고, 0이 입력되면 최소값을 출력하도록 구현하라.
설계 (순서도)
구현 (소스코드)
a = int(input("정수: "))
m = a
while a!=0:
if a<m:
m = a
a = int(input("정수: "))
print("최솟값 :", m)
# 실행결과
# 정수: 2
# 정수: 4
# 정수: 6
# 정수: 9
# 정수: 5
# 정수: 0
# 최솟값 : 2
과제 25
다음과 같이 출력하는 순서도와 파이썬 프로그램을 작성하여라.
각각 출력하시면 됩니다.
설계 (순서도)
구현 (소스코드)
for i in range(1, 6):
for j in range(1, i+1):
print(i, end=" ")
print()
설계 (순서도)
구현 (소스코드)
for i in range(5, 0, -1):
for j in range(1, i+1):
print(j, end=" ")
print()
설계 (순서도)
구현 (소스코드)
for i in range(5, 0, -1):
for j in range(i, 0, -1):
print(j, end=" ")
print()
과제 26
1!, 2!, 3!, 4!, 5!의 합을 출력하는 순서도와 파이썬 프로그램을 작성하여라.
설계 (순서도)
구현 (소스코드)
n = 1
sum = 0
for i in range(1, 6):
n = n*i
sum = sum+n
print(sum)
# 실행결과
# 153
과제27
다음과 같은 형식으로 출력되는 구구단 순서도와 파이썬 프로그램을 작성하여라.
2*1= 2 3*1= 3 4*1= 4 5*1= 5 6*1= 6 7*1= 7 8*1= 8 9*1= 9
2*2= 4 3*2= 6 4*2= 8 5*2=10 6*2=12 7*2=14 8*2=16 9*2=18
2*3= 6 3*3= 9 4*3=12 5*3=15 6*3=18 7*3=21 8*3=24 9*3=27
2*4= 8 3*4=12 4*4=16 5*4=20 6*4=24 7*4=28 8*4=32 9*4=36
2*5=10 3*5=15 4*5=20 5*5=25 6*5=30 7*5=35 8*5=40 9*5=45
2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 7*6=42 8*6=48 9*6=54
2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 8*7=56 9*7=63
2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 9*8=72
2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
설계 (순서도)
구현 (소스코드)
for j in range(1, 10):
for i in range(2, 10):
print(i, "*", j, "=", i*j, end=" ")
print()
달력만들기
년월을 (원하는 방식으로) 입력받아
해당 년도와 월을 출력하세요.
* 윤년 계산하세요.
그레고리력의 윤년 규칙은 다음과 같습니다.
- 서력 기원 연수가 4로 나누어 떨어지는 해는 윤년으로 한다. (1988년, 1992년, 1996년, 2004년, 2008년, 2012년, 2016년, 2020년, 2024년, 2028년, 2032년, 2036년, 2040년, 2044년 ...)
- 서력 기원 연수가 4, 100으로 나누어 떨어지는 해는 평년으로 한다. (1900년, 2100년, 2200년, 2300년, 2500년...)
- 서력 기원 연수가 4, 100, 400으로 나누어 떨어지는 해는 윤년으로 둔다. (2000년, 2400년...)
* 정렬 해서 깔끔하게 출력하세요.
*기원후 1년 1월 1일, 월요일
예) 입력: 1년 3월 달력을 보여줘
1월의 31일과 2월의 28일을 더하고, 일주일 7일로 나누면, 나머지 3(월,화,수)은 2월 마지막에 출력된 요일들입니다.
3월 1일을 출력하는 시작일은 나머지 3의 다음날인 (목요일)입니다.