Python 실습(등차수열, 등비수열, 시그마, 계차수열, 피보나치수열, 팩토리얼, 순열, 조합, 확률)

dumbbelldore·2024년 11월 11일
0

zero-base 33기

목록 보기
21/97

1. 등차수열 값, 합 계산 프로그램

  • {4,10,16,22,28,34,40,...}\{4, 10, 16, 22, 28, 34, 40, ... \}수열의 일반항을 구하고 nn번째 항의 값과 nn번째 항까지의 합을 구하는 프로그램을 만드시오.
n_degree = int(input("구하고자 하는 차수(n)을 입력하세요: "))

start_num = 4
gap = 6
n_num = start_num + (n_degree - 1)*gap
print(f"{n_degree}번째 항의 값: {n_num}")

n_sum = n_degree*(start_num + n_num) / 2
print(f"{n_degree}번째 항까지의 합: {n_sum}")

# 출력결과
# 구하고자 하는 차수(n)을 입력하세요: 6
# 6번째 항의 값: 34
# 6번째 항까지의 합: 114.0

2. 등비수열 값, 합 계산 프로그램

  • {2,6,18,54,162,486,...}\{2, 6, 18, 54, 162, 486, ... \}수열의 일반항을 구하고 nn번째 항의 값과 nn번째 항까지의 합을 구하는 프로그램을 만드시오.
n_degree = int(input("구하고자 하는 차수(n)을 입력하세요: "))

start_num = 2
gap = 3
n_num = start_num * (gap**(n_degree-1))
print(f"{n_degree}번째 항의 값: {n_num}")

n_sum = start_num * (1-(gap**n_degree)) / (1-gap)
print(f"{n_degree}번째 항까지의 합: {n_sum}")

# 출력결과
# 구하고자 하는 차수(n)을 입력하세요: 8
# 6번째 항의 값: 4374
# 6번째 항까지의 합: 6560.0

3. 시그마

  • {2,4,8,16,32,64,...}\{2, 4, 8, 16, 32, 64, ... \} 수열 중 30번째 항까지의 합(시그마)을 구하는 프로그램을 만드시오.
n_degree = int(input("구하고자 하는 차수(n)을 입력하세요: "))

start_num = 2
gap = 2
n_num = start_num * (gap**(n_degree-1))
n_sum = start_num * (1-(gap**n_degree)) / (1-gap)
print(f"{n_degree}번째 항까지의 합: {int(n_sum):,d}")

# 출력결과
# 구하고자 하는 차수(n)을 입력하세요: 30
# 30번째 항까지의 합: 2,147,483,646

4. 계차수열

  • {2,5,11,20,32,47,...}\{2, 5, 11, 20, 32, 47, ... \}수열의 일반항을 구하고 nn번째 항의 값을 출력하는 프로그램을 만드시오.
n_degree = int(input("구하고자 하는 차수(n)을 입력하세요: "))

org_start_num = 2
dif_start_num = 3
dif_gap = 3

# n_num = org_start_num + sigma_b
sigma_b = (n_degree-1)*(2*dif_start_num + dif_gap*(n_degree-2)) // 2
n_num = org_start_num + sigma_b
print(f"{n_degree}번째 항의 값: {n_num}")

# 출력결과
# 구하고자 하는 차수(n)을 입력하세요: 11
# 11번째 항의 값: 167

5. 피보나치수열

  • 피보나치수열에서 nn항의 값과 nn항까지의 합을 출력하는 프로그램을 만드시오.
n_degree = int(input("구하고자 하는 차수(n)을 입력하세요: "))

first_num = 1
second_num = 1
result_num = 1
idx = 1

fibonacci = list()

while len(fibonacci) < n_degree:
    
    if idx == 1:
        fibonacci.append(first_num)
        
    elif idx == 2:
        fibonacci.append(second_num)
    
    else:
        result_num = first_num + second_num
        fibonacci.append(result_num)
        first_num = second_num
        second_num = result_num

    idx += 1

print(f"{n_degree}번째 항의 값: {fibonacci[-1]}")
print(f"{n_degree}번쨰 항까지의 합: {sum(fibonacci)}")
    
# 출력결과
# 구하고자 하는 차수(n)을 입력하세요: 15
# 15번째 항의 값: 610
# 15번째 항까지의 합: 1596

6. 팩토리얼

  • 사용자로부터 수를 입력받아 팩토리얼을 계산하는 프로그램을 만드시오.
# for문 사용
num = int(input("팩토리얼 연산을 수행하고자 하는 숫자를 입력하세요: "))

result = 1

for i in range(num, 0, -1):
    result *= i
    
print(f"{num}! = {result}")

# 출력값
# 팩토리얼 연산을 수행하고자 하는 숫자를 입력하세요: 5
# 5! = 120
# math 모듈 사용
import math
print(math.factorial(5))

# 출력값
# 120

7. 순열

  • 9P4_{9}P_{4}를 계산하는 프로그램을 만드시오.
# for문 사용
n = 9
r = 4

value = 1

for i in range(n, (n-r), -1):
    value *= i

print(value) # 3024
# itertools 모듈 사용
import itertools
print(len(list(itertools.permutations(range(1,10), r=4)))) # 3024

8. 조합

  • 9C4_{9}C_{4}를 계산하는 프로그램을 만드시오.
# for문 사용
n = 9
r = 4

value = 1

# 9P4
for i in range(n, (n-r), -1):
    value *= i

# 4!
for j in range(r, 0, -1):
    value /= j
    
# 9P4 / 4!
print(int(value)) # 126
# itertools 모듈 사용
import itertools
print(len(list(itertools.combinations(range(1,10), r=4)))) # 126

9. 확률

  • 박스에 '꽝'이 적힌 종이가 6장 있고, '선물'이 적힌 종이가 4장이 있다. 이 중, '꽝' 3장과 '선물' 3장을 뽑을 수 있는 확률을 구하는 프로그램을 만드시오.
# (1) 사건 건수: 6C3 * 4C3
# (2)   총 건수: 10C6
# (3) 발생 확률: (1) / (2)

import itertools

count_6C3 = len(list(itertools.combinations(range(1,7), r=3)))
count_4C3 = len(list(itertools.combinations(range(1,5), r=3)))
count_10C6 = len(list(itertools.combinations(range(1,11), r=6)))
prob = (count_6C3 * count_4C3) / count_10C6
print(f"확률: {prob*100:.2f}%")

# 출력결과
# 확률: 38.10%

*이 글은 제로베이스 데이터 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.

profile
데이터 분석, 데이터 사이언스 학습 저장소

0개의 댓글