파이썬 기초 - 기초수학

hs0820·2023년 6월 16일

파이썬

목록 보기
10/16
post-thumbnail

📝파이썬 기초 - 기초수학

📌 기초수학

✏ 시그마

  • Σ란, 수열의 합을 나타내는 기호이다.
# sn = a1 * (1-r^n) / (1-r)

inputN1 = int(input('시작 값 : '))
inputR = int(input('공비 : '))
inputN = int(input('n 입력 : '))

sumN = inputN1 * (1-(inputR ** inputN)) / (1-inputR)
print(sumN)
↓
시작 값 : 1
공비 : 2
n 입력 : 6
63.0

✏ 계차 수열

  • 어떤 수열의 인접하는 두 항의 차로 이루어진 또 다른 수열
inputAN1 = int(input('a1 입력 : '))
inputAN = int(input('숫자 입력 : '))

inputBN1 = int(input('b1 입력 : '))
inputBD = int(input('bn 공차 입력 : '))

valueAN = 0
valueBN = 0

AnNumbers = []
BnNumbers = []

n = 1
while n <= inputAN:
    if n == 1:
        valueAN = inputAN1
        valueBN = inputBN1

        AnNumbers.append(valueAN)
        BnNumbers.append(valueBN)
        # print('an의 {}번째 항의 값 : {}'.format(n, valueAN))
        # print('bn의 {}번째 항의 값 : {}'.format(n, valueBN))
        n += 1
        continue

    valueAN = valueAN + valueBN
    valueBN = valueBN + inputBD
    AnNumbers.append(valueAN)
    BnNumbers.append(valueBN)
    # print('an의 {}번째 항의 값 : {}'.format(n, valueAN))
    # print('bn의 {}번째 항의 값 : {}'.format(n, valueBN))
    n += 1

print(f'AN => {AnNumbers}')
print(f'BN => {BnNumbers}')
↓
a1 입력 : 1
숫자 입력 : 10
b1 입력 : 2
bn 공차 입력 : 3
AN => [1, 3, 8, 16, 27, 41, 58, 78, 101, 127]
BN => [2, 5, 8, 11, 14, 17, 20, 23, 26, 29]

✏ 피보나치 수열

  • 세 번째 항은 두 번째 항과 첫 번째 항을 더한 합이다.
inputN = int(input('n 입력 : '))

valueN = 0
sumN = 0

valuePreN2 = 0
valuePreN1 = 0
fibonacci = []

n = 1
while n <= inputN:
    if n ==1 or n == 2:
        valueN = 1
        valuePreN2 = valueN
        valuePreN1 = valueN

        sumN += valueN
        fibonacci.append(valueN)
        n+=1

    else:
        valueN = valuePreN2 + valuePreN1
        valuePreN2 = valuePreN1
        valuePreN1 = valueN
        sumN += valueN
        fibonacci.append(valueN)
        n += 1

print('fibonacci : {}'.format(fibonacci))
print('{}번째 항의 값 : {}'.format(inputN, valueN))
print('{}번째 항까지의 합 : {}'.format(inputN, sumN))
↓
n 입력 : 8
fibonacci : [1, 1, 2, 3, 5, 8, 13, 21]
8번째 항의 값 : 21
8번째 항까지의 합 : 54

✏ 팩토리얼

  • 1부터 양의 정수 n까지의 정수를 모두 곱한 것
inputN = int(input('n 입력 : '))

def getFactorial(n):
    result = []
    if n < 0:
        return None
    else:
        for i in range(1, n+1):
            factorial = 1
            for j in range(1, i + 1):
                factorial *= j
            print('{} 팩토리얼 : {}'.format(i,factorial))
            result.append(factorial)
        return result

fNum = getFactorial(inputN)

print(fNum)
↓
n 입력 : 7
1 팩토리얼 : 1
2 팩토리얼 : 2
3 팩토리얼 : 6
4 팩토리얼 : 24
5 팩토리얼 : 120
6 팩토리얼 : 720
7 팩토리얼 : 5040
[1, 2, 6, 24, 120, 720, 5040]

✏ 군수열

  • 여러 개의 항을 묶었을 때 규칙성을 가지는 수열
inputN = int(input('n 입력 : '))

flag = True
n=1; nCnt = 1; searchN = 0

while flag:

    for i in range(1, n+1):
        print('{}'.format(i),end='')
        nCnt += 1

        if nCnt > inputN:
            searchN = i
            flag = False
            break
    print()
    n+= 1

print(searchN)
↓
n 입력 : 100
1
12
123
1234
12345
123456
1234567
12345678
123456789
12345678910
1234567891011
123456789101112
12345678910111213
123456789
100: 9

✏ 순열

  • n개에서 r개를 택하여 나열하는 경우의 수
# 8p3
inputN = int(input('nunN 입력 : '))
inputR = int(input('numR 입력 : '))

result = 1
for n in range(inputN, (inputN-inputR), -1):
    print('n : {}'.format(n))
    result *= n

print('result : {}'.format(result))
↓
nunN 입력 : 8
numR 입력 : 3
n : 8
n : 7
n : 6
result : 336
  • 원순열
    - 시작과 끝의 구분이 없는 순열
inputN = int(input('nunN 입력 : '))

result = 1

for i in range(1,inputN):
    result *= i

print('result : {}'.format(result))
↓
nunN 입력 : 6
result : 120

✏ 조합

  • n개에서 r개를 택하는 경우의 수
numN = int(input('numN 입력: '))
numR = int(input('numR 입력: '))

resultP = 1
resultR = 1
resultC = 1

for n in range(numN, (numN - numR), -1):
    resultP *= n

for n in range(numR, 0, -1):
    resultR *= n

resultC = int(resultP / resultR)

print(resultC)

result = (1/resultC) * 100
print('{}%'.format(round(result, 2)))
↓
numN 입력: 7
numR 입력: 5
21
4.76%

✏ 확률

  • 모든 사건에서 특정 사건이 일어날 수 있는 수를 나타낸 것
def proFun():
    numN = int(input('numN 입력: '))
    numR = int(input('numR 입력: '))

    resultP = 1
    resultR = 1
    resultC = 1

    for n in range(numN, (numN - numR), -1) :
        resultP *= n

    for n in range(numR, 0, -1):
        resultR *= n

    resultC = int(resultP / resultR)
    print(resultC)

    return resultC

sample = proFun()
print('sample : {}'.format(sample))

event1 = proFun()
print('event1 : {}'.format(event1))

event2 = proFun()
print('event2 : {}'.format(event2))

probability = (event1 * event2) / sample
print('probability : {}%'.format(round(probability * 100, 2)))
↓
numN 입력: 7
numR 입력: 3
35
sample : 35
numN 입력: 4
numR 입력: 2
6
event1 : 6
numN 입력: 3
numR 입력: 1
3
event2 : 3
probability : 51.43%
profile
개발 스터디 노트

0개의 댓글