함수를 정의하고 내용을 입력하지 않으면 에러가 난다.

돌아가는지 확인해보고싶으면 pass를 쓰면 넘어간다.


(함수 내용이 없는 경우 에러)


(pass를 적으면 에러없이 넘어간다.)


* 파이썬에서의 함수
1. 입력된 문자열이 실수로 이루어져있는지를 판단하는 함수

def isfloat( data ):

입력 : 임의의 문자열
출력 : True of False
           - 실수로 변경가능한 문자열이라면 True
           - 그렇지 않으면 False

2. 입력된 문자열이 음수로 이루어져있는지를 판단하는 함수

def isneg( data ):

입력 : 임의의 문자열
출력 : True of False
         - 음수로 변경가능한 문자열이라면 True
         - 그렇지 않으면 False


(함수 코드)


(결과)


*라이브러리 : 이미 만들어져있는 함수이다.

* 파이썬 모듈
 - 파이썬 코드로 이루어진 파이썬 파일
 - 사용하고싶은 함수들을 하나의 파일에 만들어 두는 것이다.
   그 후 사용하고 싶으면 import한다.


 - 어디서나 import 하고 싶으면
 -> 파이썬3의 라이브러리 파일들의 경로가 따로 있다. 이 곳에 넣어둬야한다.


(내가 만든 모듈을 라이브러리에 추가한 모습)


import 방법
import 파일
from 파일 import *      -> 이렇게 적으면 모듈 이름을 안적어도 된다.
from 파일 import 특정함수    -> 특정 함수만 import할 수 있다.

왠만하면 import 파일   형식으로 하는게 좋다.
왜냐하면 두세번째로 하다가 함수 이름이 겹칠 가능성이 있을 수 있어서 그렇다.
두세번째는 편하기는 하지만 충동할 수 있다는걸 주의하고 해야한다.
보통 모듈파일에는 실행코드는 적지 않는다.
실행코드가 있다면 import 되는 순간 파일이 실행된다.

만약 모듈을 만들고
이 모듈이 잘 돌아가는지 테스트코드를 넣어볼 수 있다.

만약 실행코드를 안삭제하고 import하고 실행시키면
import 될때 모듈파일의 테스트코드가 실행된다.
만약 지우지않고 쓰고싶다면
if __name_- == "__main__":
    main()
이코드를 넣으면 이 해당파일이 단독으로 실행되면 실행되지만
import되는 경우에는 코드가 실행되지 않는다.
-> 단독으로 실행하는 경우 실행코드들이 실행되고
   import되는 경우에는 실행되지 않는다.



(모듈 파일에 테스트코드를 추가한 모습)



(모듈을 import 한 순간 테스트코드가 실행되는 모습)



(__name__ 을 모듈에 추가해서 실행시 테스트코드가 실행되지 않는 모습)



* 프로그램 작성

1) 안전한 제곱근을 구하는 함수

math 모듈에 sqrt() 함수로 제곱근을 구할 수 있다.
 - 숫자가 아니거나 음수가 입력되면 에러가된다.
 
알고리즘
1. 사용자로부터 값을 입력받는다.
 
 - 입력값의 형태는 실수여야 한다.

2. safe_sqrt 함수 인자로 입력값 전달
 3. 입력된 값이 허용범위의 값인지 판별 허용범위라면 실수로 변환 후에
    sqrt 함수를 이용해서 제곱근을 구한 후 출력
 4. 허용된 입력값의 범위가 아니라면 다시 입력받을 수 있도록 한다. 
 5. 3번으로 돌아간다.


(만들어본 코드(좌), 실행화면(우))


2)  대출 상환금 계산 프로그램

- 입력 :
 대출 원금
 대출 기간
 대출 이율

- 출력 :
 연상환금
 월상환금
 총상환금

- 연상환금 계산 공식

                   (1 + 대출 이율)^대출 기간 + 대출 원금 + 대출 이율
연상환금 = ---------------------------------------------------------------
                                  (1 + 대출 이율)^대출기간 - 1

1) 대출 원금과 대출 기간, 대출 이율을 각각 입력 받는다.
 - 대출원금과 대출 기간은 자연수의 입력만 허용하며 대출 이율은 실수 입력만 허용할 수 있도록 한다.
2) 입력값에 맞춰서 연상환금을 계산한다.
3) 연상환금과 월상환금, 총상환금을 출력
4) 프로그램을 계속 진행할 것인지를 입력받는다.
 a-1) "yes"를 입력한 경우 1)번으로 돌아가서
       대출 원금과 대출 기간, 대출 이율을 새로 입력
 b-2) no 를 입력한 경우 프로그램 종료
 4-3) yes no 이외의 값이면 새로 입력을 받는다.
* 소수점이하를 버리고 싶으면 int 형으로 형변환 하면한다.
* 반올림 하고 싶으면 round 함수를 이용하여 형변환한다.



(소수점 그대로 출력)



(소수점까지 출력되는 모습)




(작성해본 코드, 결과를 int형으로 형변환 한 모습 : 소수점 자리 버리는 모습)




(소수점 자리 버림 모습)












오늘의 주제는

* 실수는 어떻게 구분할까?
 1.4, 10.2, .... 
* 음수는 어떻게 구분할까?
 -2, -4

에서 부터 시작된다.

성적처리프로그램을 만들 던 중
입력으로 들어오는 값 중
음수, 실수(소수점자리수)를 어떻게 구분할까? 라는 문제제기가 되었다.

먼저 음수와 실수의 특징들을보면

음수일 경우
 
 -10, -2, ......  ( 맨 앞에 대쉬(-)로 시작하고 이어서 숫자가 나오는 경우 )
  
실수일 경우
 23.2    ( 숫자나오고 .(점) 문자 후 바로 숫자 )

이러한 문자열들을 구분할 수 없을까?

먼저, str.isdigit() 함수에서는 정수인지만 판별 할 수 있다.

먼저 자료 타입을 더 공부해본다.

파이썬에서 제공하는 자료 타입
 - list, tuple, set, dictionary

리스트
 - 데이터들의 순서열(sequence)
 - 리스트내의 원소들의 값을 변경 할 수 있다. *
 - 인덱스 : 0부터 시작한다.
-  표현 : [ ] 이 기호 안에 입력한다.


(리스트 예시, 값을 변경하는 모습)


튜플
 - 리스트와 거의 동일 (차이점 : 투플내 원소들을 변경할 수 없다.)
 - 문자열은 튜플이다. (문자열은 변경되지 않는다.) *
 - () 소괄호로 표시한다.
 - 문자열도 튜플이기 때문에 변경할 수 없다.


(튜플을 정의하고 출력하는 모습, 값을 변경하는 경우 에러가 발생한다.)


* 리스트나 튜플의 특징을 이용하면 음수나 실수를 구분 할 수 있다.

이러한 특징 중 내장함수들을 잘 이용해야한다.
https://docs.python.org/3/library/index.html


위의 홈페이지에 들어가보면
파이썬에 관련된 문서들을 찾아볼 수 있다.


(파이썬 공식홈페이지 참조)


순서열에서 사용가능한 연산자들
순서열 -> 문자열, 리스트, 튜플 등등
x in s  -> 순서열 검색  s 문자열 내에 x순서열이 존재하는지 체크하는 연산자
s * n   -> s 순서열을 n번 반복 (n은 숫자)
s[i]    -> s 순서열 내 i번째 원소 가리키는 표시.

s[i:j]   -> i번째에서 j번까지 잘라냄  j번을 포함하지 않는다. j번전까지 해서 잘라짐.
len(s)   -> s의 길이를 표현 
s.index   -> 순서열이 시작하는 위치
s.count   -> 얼마나 있는지 카운팅함   (안되는 경우도 있다.)


(연산자 사용 예시)


- 슬라이스 가능 -> 슬라이스는 원 자료를 변형시키는 것이 아니라
                              잘라진 새로운 자료을 만드는 것이다.

* sample = [1, 2, 3, 4, 5]
sample은 위 리스트의 주소를 가지고 있는 참조 변수이다.
그런데 슬라이스는 새로운 자료를 만드는 것이므로
슬라이스해서 입력하면 기존 자료가 변하지 않는다.  -> 그래서 튜플도 슬라이스가능한 것이다.


(참조변수로 사용되는 리스트 변수이름)


* partition을 이용해 실수를 체크해보겠다.
  -> 파티션은 기준으로 부터 3개의 튜플로 반환한다.


(str.partition(x) 사용 예시)


* 동시지정문 이용
(n, x, m) = '1.4'.partition('.')


(동시지정문으로 .partition 된 결과를 입력받는 모습)


* partition 은 문자열에서만 제공하는 메소드이다.
   다른 리스트나 이런데서 사용할 수 없다.

모듈 -> 함수를 모아둔 파일을 모듈이라고 한다.
* 파이썬에서의 함수 작성
입력에 대해 출력이 없으면 프로시져라고 부르고
            있으면 함수라고 부른다.

1. 함수(function)
 - 출력을 나타내면 함수라고한다.

2. 프로시져(procedure)
 - 입력에 대해 출력이 없으면 프로시져라고한다.

3. 메서드(method)
 - class 내에 선언된 함수를 정의하면 메서드라고 한다.

-> 결국 세개가 다 같은 맥락이다. 만드는 방법도 같다.

파이썬에서의 함수 정의
ex)
 f(x) = 2x + 10      정의
 이 함수를 파이썬에서 그대로 표현한다면
 def f(x):
  return 2* x + 10


(함수 표현)


여러개의 값을 동시에 return도 가능하다. -> 파이썬에서는 동시지정이 가능하기 때문이다.


(동시지정문으로 하나의 함수에서 여러값을 return받는 모습)


위의 기능들을가지고
isneg()  -> 음수판별
isfloat()  -> 실수판별
함수를 만들 수 있을 것이다.

다음시간에 만들어 보겠다 :)









+ Recent posts