📝파이썬 기초 - 기초수학
📌 기초수학
✏ 시그마
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)
n += 1
continue
valueAN = valueAN + valueBN
valueBN = valueBN + inputBD
AnNumbers.append(valueAN)
BnNumbers.append(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
✏ 순열
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
✏ 조합
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%