파이썬 슬라이싱과 반복문, 조건문 등을 이용하여 구구단을 출력하는 방법과 최대공약수를 구하는 방법입니다.
Multiplication table & Greatest common divisor
슬라이싱
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[1][2][1][("파이", "숫자")])
3.14
한 글자씩 줄여가면서 출력하기
아래 코드에서 빈 줄이 있는 부분을 채워서 완성해보세요.
x = "Hello"
while ____:
print(x, end=" ")
__________
예상 출력
Hello ello llo lo o
x = "Hello"
while len(x) > 0:
print(x, end=" ")
x = x[1:]
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
for i in range(1, 10):
print(f"{num} x {i} = {num * i}")
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
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
for j in range(1, 10):
for i in range(2, 10):
print(f"{i} x {j} = {i * j:>4}", end=" ")
print()
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(("1이상 12이하의 정수를 입력하세요: ")))
if 3 <= month <= 5 :
print(f"{month}월은 봄입니다.")
elif 6 <= month <= 8:
print(f"{month}월은 여름입니다.")
elif 9 <= month <= 11:
print(f"{month}월은 가을입니다.")
else:
print(f"{month}월은 겨울입니다.")
1이상 12이하의 정수를 입력하세요1
1월은 겨울입니다.
month = int(input(("1이상 12이하의 정수를 입력하세요: ")))
if 3 <= month <= 5 :
print(f"{month}월은 봄입니다.")
elif 6 <= month <= 8:
print(f"{month}월은 여름입니다.")
elif 9 <= month <= 11:
print(f"{month}월은 가을입니다.")
elif month == 12 or 1 <= month <= 2:
print(f"{month}월은 겨울입니다.")
1이상 12이하의 정수를 입력하세요2
2월은 겨울입니다.
month = int(input(("1이상 12이하의 정수를 입력하세요: ")))
seasons = ("봄", "여름", "가을", "겨울")
print(f"{month}월은 {seasons[(month - 3) // 3] }입니다.")
1이상 12이하의 정수를 입력하세요: 3
3월은 봄입니다.
month = int(input(("1이상 12이하의 정수를 입력하세요: ")))
seasons = ("봄", "여름", "가을", "겨울")
print("{0}월은 {1}입니다.".format(month, ("봄", "여름", "가을", "겨울")[(month - 3) // 3] ))
1이상 12이하의 정수를 입력하세요: 5
5월은 봄입니다.
최대공약수 구하기
공약수는 두 자연수가 공통적으로 가지고 있는 약수
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):
if 18 % i == 0:
divisors_of_18.append(i)
divisors_of_18
[1, 2, 3, 6, 9, 18]
스텝 2 이번에는 24의 약수들을 모두 포함하는 리스트. [1, 2, 3, 4, 6, 8, 12, 24]
divisors_of_24 = []
for i in range(1, 25):
if 24 % i == 0:
divisors_of_24.append(i)
divisors_of_24
[1, 2, 3, 4, 6, 8, 12, 24]
스텝 3 이번에는 두 리스트에서 공통되는 아이템
[1, 2, 3, 6]
common_divisors = []
for i in divisors_of_18:
if 24 % i == 0:
common_divisors.append(i)
common_divisors
[1, 2, 3, 6]
스텝 4 common_divisors의 아이템들 중에서 가장 큰 것이 최대공약수6
print(common_divisors[-1])
6
스텝 5 set도 사용. 리스트를 셋으로 바꾸고 intersection()
메써드와 max()
함수를 사용
6
set(divisors_of_18) & set(divisors_of_24)
{1, 2, 3, 6}
max(set(divisors_of_18) & set(divisors_of_24))
6
max(set(divisors_of_18).intersection(divisors_of_24))
6
스텝 6 for문을 하나만 사용해서 num1
과 num2
의 모든 공약수 구하기
[1, 2, 3, 6]
num1 = 18
num2 = 24
common_divisors = []
for i in range(1, min(num1, num2) + 1):
if num1 % i == 0 and num2 % i == 0:
common_divisors.append(i)
common_divisors
[1, 2, 3, 6]
import math
num1 = int(input("자연수를 입력해 주세요: "))
num2 = int(input("자연수를 입력해 주세요: "))
common_divisors = []
for i in range(1, math.gcd(num1, num2) + 1):
if math.gcd(num1, num2) % i == 0:
common_divisors.append(i)
print(f"입력하신 두 수의 공약수는 {common_divisors} 입니다.")
자연수를 입력해 주세요: 18
자연수를 입력해 주세요: 24
입력하신 두 수의 공약수는 [1, 2, 3, 6] 입니다.
스텝 7 common_divisors 리스트를 거치지 않고 바로 greatest_common_divisor를 구하기.6
num1 = 18
num2 = 24
greatest_common_divisor = 1
for i in range(1, min(num1, num2) + 1):
if num1 % i == 0 and num2 % i == 0:
greatest_common_divisor = i
greatest_common_divisor
6
스텝 8 common_divisors 리스트를 거치서 greatest_common_divisor를 구하기.6
import math
num1 = int(input("자연수를 입력해 주세요: "))
num2 = int(input("자연수를 입력해 주세요: "))
common_divisors = []
for i in range(1, math.gcd(num1, num2) + 1):
if math.gcd(num1, num2) % i == 0:
common_divisors.append(i)
print(f"입력하신 두 수의 최대공약수는 {common_divisors[-1]} 입니다.")
자연수를 입력해 주세요: 18
자연수를 입력해 주세요: 24
입력하신 두 수의 최대공약수는 6 입니다.
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받을 수 있습니다.
댓글