파이썬에서 배운 기본적인 내용을 바탕으로 구구단을 출력해 보고 또 주어진 두 수의 최대공약수를 구해보는 문제를 풀어보세요.
파이썬 구구단과 최대공약수
슬라이싱
my_list = [1, 2, 3, 4, 5, 6]
my_list[0:5:1] = ['A', 'B', 'C'] # :1은 생략 가능
my_list
['A', 'B', 'C', 6]
my_list = [1, 2, 3, 4, 5, 6]
my_list[0:5:2] = ['A', 'B', 'C']
my_list
['A', 2, 'B', 4, 'C', 6]
attempt to assign sequence of size 2 to extended slice of size 3
# 슬라이싱된 원소는 3개 대입할 원소는 2개 갯수가 불일치하여 오류발생
my_list = [1, 2, 3, 4, 5, 6]
my_list[0:5:2] = ['A', 'B']
my_list
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Input In [3], in <cell line: 3>()
1 # 슬라이싱된 원소는 3개 대입할 원소는 2개 갯수가 불일치하여 오류발생
2 my_list = [1, 2, 3, 4, 5, 6]
----> 3 my_list[0:5:2] = ['A', 'B']
4 my_list
ValueError: attempt to assign sequence of size 2 to extended slice of size 3
복잡한 리스트에서 값 읽어오기
3.14를 출력
print(my_list[___])
my_list = [1, [3+4, 777, ["Hi", {"중력":9.8, ("파이", "숫자"):3.14, "파이":"애플"}]]]
print(my_list[??])
한 글자씩 줄여가면서 출력하기
아래 코드에서 빈 줄이 있는 부분을 채워서 완성해보세요.
x = "Hello"
while ____:
print(x, end=" ")
__________
예상 출력
Hello ello llo lo o
구구단 출력
2이상 9 이하의 정수에 대해 아래와 같이 곱셈표를 출력하는 프로그램 예시는 3단
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
3 x 4 = 12
3 x 5 = 15
3 x 6 = 18
3 x 7 = 21
3 x 8 = 24
3 x 9 = 27
num = 3
2단부터 9단까지 아래와 같이 모두 출력.
2 x 1 = 2 3 x 1 = 3 4 x 1 = 4 5 x 1 = 5 6 x 1 = 6 7 x 1 = 7 8 x 1 = 8 9 x 1 = 9
2 x 2 = 4 3 x 2 = 6 4 x 2 = 8 5 x 2 = 10 6 x 2 = 12 7 x 2 = 14 8 x 2 = 16 9 x 2 = 18
2 x 3 = 6 3 x 3 = 9 4 x 3 = 12 5 x 3 = 15 6 x 3 = 18 7 x 3 = 21 8 x 3 = 24 9 x 3 = 27
2 x 4 = 8 3 x 4 = 12 4 x 4 = 16 5 x 4 = 20 6 x 4 = 24 7 x 4 = 28 8 x 4 = 32 9 x 4 = 36
2 x 5 = 10 3 x 5 = 15 4 x 5 = 20 5 x 5 = 25 6 x 5 = 30 7 x 5 = 35 8 x 5 = 40 9 x 5 = 45
2 x 6 = 12 3 x 6 = 18 4 x 6 = 24 5 x 6 = 30 6 x 6 = 36 7 x 6 = 42 8 x 6 = 48 9 x 6 = 54
2 x 7 = 14 3 x 7 = 21 4 x 7 = 28 5 x 7 = 35 6 x 7 = 42 7 x 7 = 49 8 x 7 = 56 9 x 7 = 63
2 x 8 = 16 3 x 8 = 24 4 x 8 = 32 5 x 8 = 40 6 x 8 = 48 7 x 8 = 56 8 x 8 = 64 9 x 8 = 72
2 x 9 = 18 3 x 9 = 27 4 x 9 = 36 5 x 9 = 45 6 x 9 = 54 7 x 9 = 63 8 x 9 = 72 9 x 9 = 81
계절 판별하기
1 이상 12 이하의 정수를 입력받아서 계절을 출력 문자열 포매팅도 사용.
계절 | 월 |
---|---|
봄 | 3, 4, 5 |
여름 | 6, 7, 8 |
가을 | 9, 10, 11 |
겨울 | 12, 1, 2 |
결과 예시: 7을 입력했을 경우 "7월은 여름입니다." 출력
month = int(input())
최대공약수 구하기
공약수는 두 자연수가 공통적으로 가지고 있는 약수
18의 약수는 1, 2, 3, 6, 9, 18
24의 약수는 1, 2, 4, 6, 8, 12, 24
최대공약수는 그 중에서 가장 큰 약수. 18과 24의 최대공약수는 6
파이썬에서는 math
모듈의 gcd()
함수를 이용해서 최대공약수를 구할 수 있습니다.
함수 이름 gcd는 the greatest common divisor
import math
math.gcd(18, 24)
6
gcd()
함수를 사용하지 않고 직접 계산
만약 여러가지 입력에 대해서 내가 구현한 것이 정확한지 확인하고 싶다면 gcd()
와 결과를 비교
스텝 1 먼저 18의 약수(divisor)들을 모두 포함하는 리스트 만들기
[1, 2, 3, 6, 9, 18]
어떤 수가 18의 약수인지 아닌지를 검사할 때 작은 수에서 큰 수로 증가시켜가면서 검사한다면 자연스럽게 오름차순으로 정렬된 결과 얻음.
힌트: 리스트의 append()
메써드 사용.
divisors_of_18 = []
for i in range(1, 19):
pass # 여기에 구현
divisors_of_18
스텝 2 이번에는 24의 약수들을 모두 포함하는 리스트. [1, 2, 3, 4, 6, 8, 12, 24]
divisors_of_24 = []
pass # 여기에 구현
divisors_of_24
스텝 3 이번에는 두 리스트에서 공통되는 아이템
[1, 2, 3, 6]
common_divisors = []
# 위에서 구한 divisors_of_18/24를 그대로 사용
for i in divisors_of_18:
pass # 여기에 구현
common_divisors
스텝 4 common_divisors의 아이템들 중에서 가장 큰 것이 최대공약수6
#print(common_divisors[???])
스텝 5 set도 사용. 리스트를 셋으로 바꾸고 intersection()
메써드와 max()
함수를 사용
6
#max(set(???).intersection(???))
스텝 6 for문을 하나만 사용해서 num1
과 num2
의 모든 공약수 구하기
[1, 2, 3, 6]
num1 = 18
num2 = 24
common_divisors = []
# uses min()
pass
common_divisors
스텝 7 common_divisors 리스트를 거치지 않고 바로 greatest_common_divisor를 구하기.6
num1 = 18
num2 = 24
greatest_common_divisor = 1
pass
greatest_common_divisor
'수학과 코딩' 카테고리의 다른 글
Python Mean, Palindrome, Item change, Floyd Triangle(평균, 회문, 아이템변경, 플로이드 삼각형) (0) | 2022.08.02 |
---|---|
python multiplication table, greatest common divisor (0) | 2022.08.02 |
python 반복(for) 문자열 (f-string) 별 찍기(star) 트리 만들기(tree) (0) | 2022.08.01 |
파이썬(python) 반복문(for), 문자열 포멧(format) 트리 만들기 (0) | 2022.08.01 |
파이썬(python) 반복문(for, whole), eval, isnumeric, if 등 사용에 관한 문제 풀이 (0) | 2022.08.01 |
댓글