1.다양한 응용문제해결하기
예제1) 함수를 이용하여 팩토리얼 계산프로그램을 구현하고 0을 입력하면 종료하도록 만들기
#y라는 변수를 쓰기위해서는 y=1이라고 초반에 설정 해둬야한다. def 만 쓰는게 아니라 for도 쓰기 때문인듯
예제2)369게임 프로그램
13이나 31처럼 3이 들어가도 박수를 치는것으로 할 때, "3" in str(n)으로 조건을 준다.
예제3)랜덤 구구단퀴즈 import random, import time
예제4)소수구하기 (prime number)
1)else문 이용
n=int(input("수를 입력하시오"))
for t in range(2,n,1):
if n%t==0:
print("%d는 %d로도 나눠지므로 소수가 아님" %(n,t))
break
else: #들여쓰기 하게되면 n-2만큼 print가 출력됨
print("%d는 소수다." %n)
2)함수이용
def f(n):
for t in range(2,n,1):
if n%t==0:
return False
return True
n=int(input("수를 입력하시오"))
a=f(n)
if a==True:
print("소수다")
else: #a=False
print("소수가 아님")
예제4-1) 2부터 50까지의 수 중에서 소수를 찾아서 소수의 개수와 합계를 구하기
변수 f(t) f(n) 주의할 것.
예제5)최대공약수 구하기 (유클리디안과 일반적인 방법 비교)
n1=int(input("숫자 입력"))
n2=int(input("숫자입력"))
a=1
for i in range(1,n1+1):
if (n1%i==0) and (n2%i==0):
a=i #if문 아래에 명령문이 반드시 필요
print("최소공배수는 %d"%a)
유클리드 호제법. a,b 입력
a==b 이면 a
a>b 이면 a=a-b
a<=b이면 b=b-a
알고리즘의 중요성을 알 수 있다.
숫자가 커지면 f()는 0.09초 g()는 여전히 0초가 소요됨.
예제6)피보나치수열 - 1.무작정 더한다. 2.재귀적수식 3.수학공식
2.재귀함수
#30번째 이상은 안된다.
while 문이 false가 될일이 없으므로 무한반복된다.
return은 show라고 이해해도 될 것 같다
3.수식
# 큰숫자도 가능
4. 2와 3의 소요시간비교
#큰숫자는 안나오는줄 알았는데 시간이 오래걸린다. 40번째 피보나치 계산하면 23초가 걸리는 것을 확인할 수 있다.
#함수 선언 2가지를 했는데 fibo2(n)에서 return 선언을 안해서 계속 마지막줄이 출력되지 않음
4.math 라이브러리 활용
import math as m
n=1.6789
반올림 round() math.round(n,2) 1.68
올림 ceil() math.ceil(n) 2
내림 floor() math.floor(n) 1
버림 trunc() math.trunc(n) 1
절대값 fabs() math.fabs(-3.4) 3.4
거듭제곱 pow() math.pow(2,10) 2^10
팩토리얼 factorial() math.factorial(5) 5!
최대공약수 gcd() math.gcd(10,15) 5 #great common deivisior
제곱근 sqrt() math.sqrt(5)
밑이 n인 로그함수 log(p,n) math.log(1000,10) 3 #log n (P)
'python' 카테고리의 다른 글
python_7 with 컴퓨팅사고 (김완섭 ch.17~ (0) | 2021.05.02 |
---|---|
python_6 with 컴퓨팅사고(김완섭 ch14~) (0) | 2021.05.01 |
python_4 with 컴퓨팅사고(김완섭 ch10~) (0) | 2021.04.24 |
python_3 with 컴퓨팅사고(김완섭 ch8~) (0) | 2021.04.22 |
python_2 with 컴퓨팅사고(김완섭) ch5~ (0) | 2021.04.17 |