opencv를 설치하고 테스트 하는 방법은 아주 다양 합니다저는 anaconda를 설치했기 때문에 그냥 숟가락 하나 더 놓기만 하면 되기 때문에 anaconda에서 테스트를 해보았습니다.


아나콘다 설치는 아래 링크를 참조 하세요.

아나콘다 설치 윈도우즈 7, 10 (Anaconda Version 5.2.0) - 201812



1. opencv 설치

 

Anaconda Prompt를 열고 명령어를 실행 합니다.  


anaconda_opencv_jupyter


 

설치는 명령어 하나면 완료 됩니다.

명령어도 다양한데 저는

 

conda install -c menpo opencv3

동일한데 설치 오류나면 이거

conda install --channel https://conda.anaconda.org/menpo opencv3

 

아니면

pip install opencv-python

또는 

pip install opencv-contrib-python

이것으로 설치를 진행 합니다.


anaconda_opencv_jupyter


중간에 진행 여부를 물어보면


anaconda_opencv_jupyter


y 하고 엔터


anaconda_opencv_jupyter


opencv가 설치 완료 되었습니다.

 

 

2. jupyter notebook 실행

 

시작 버튼에서 아나콘다 메뉴를 선택하고 jupyter notebook을 클릭 합니다.


anaconda_opencv_jupyter


주피터 노트북이 열리면 파일을 하나 새로 만들어 줍니다설치 버전에 따라 Python 3이 아니고 Python 2인 경우도 있을 텐데 관계 없습니다.


anaconda_opencv_jupyter


코딩을 하고 상단 Run을 클릭 합니다.


anaconda_opencv_jupyter


소스는 글씨가 너무 작나요? 인터넷에 바글바글하게 있긴 한데 아래와 같습니다.


import cv2

 

img = cv2.imread('F:/tensordata/number/num3.png')

cv2.imshow('image',img)

cv2.waitKey(0) 

cv2.destroyAllWindows() 


실행을 하면 새 창이 뜨면서 이미지를 볼 수 있습니다.


anaconda_opencv_jupyter


 

8. 파일 입력 출력

 

8.1 파일 함수와 옵션

 

파일 오픈 함수는 생각보다 많은 매개변수가 있습니다.

open(filename, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

파일을 오픈 하기 위해 주로 사용하는 것은

- filename은 필수로 입력 합니다.

- mode r(읽기), w(쓰기), a(추가하기) 중 하나를 기입하고

- t(텍스트) b(바이너리)도 입력해야 하는데 생략시 t default로 설정됩니다.

- encoding은 생략시 utf-8로 설정 됩니다.

- 나머지는 필요에 따라 선택적으로 적용 합니다.

 

모드는 여러 가지의 조합으로 사용 됩니다.

모드

의미

r

읽기파일을 읽기 위해 오픈 (default). 파일 없으면 오류

w

쓰기파일을 쓰기모드로 오픈. 파일 없으면 생성, 있으면 삭제 생성

x

open for exclusive creation, failing if the file already exists

a

쓰기끝에 추가, 없으면 생성

b

이진 모드

t

텍스트 모드 (default)

+

업데이트용 파일 오픈 (읽기, 쓰기 가능)

 r+

읽기 또는 쓰기, 파일 없으면 오류. 파일 있으면 처음에 추가

 w+

읽기 또는 쓰기, 파일 없으면 생성. 파일 있으면 삭제 후 생성

 a+

읽기 또는 추가, 파일 없으면 생성. 파일 있으면 끝에 추가


python study

 


8.2 파일 생성 및 쓰기

 

f = open(“file_name”, ‘w’)

파일을 쓰기모드(w)로 열면 파일이 존재하지 않는 경우 새로 생성이 되지만 기존에 파일이 존재하는 경우 기존 파일 내용을 삭제하고 새로 쓰기를 하게 됩니다.

 

8.2.1 write() 함수

 

write(data) 함수는 data를 파일에 모두 출력 합니다. 

sum = 0

f = open("F:/Python/file_write01.txt", 'w')

for i in range(1,101):

           sum += i

           tmp_data = "sum( %d ) = %d + %d\n"  % (sum , sum, i)

           f.write(tmp_data)

 

print(sum)

f.close()

(base) F:\Python>python file_w01.py

5050

sum( 1 ) = 1 + 1

sum( 3 ) = 3 + 2

sum( 6 ) = 6 + 3

sum( 10 ) = 10 + 4

sum( 15 ) = 15 + 5

sum( 21 ) = 21 + 6

sum( 28 ) = 28 + 7

sum( 36 ) = 36 + 8

sum( 45 ) = 45 + 9

....(생략)

 

list를 파일로 출력하려면 문자열로 변환하여 출력 하여야 합니다.

list_data = ['aaaa', 'bbbb','cccc']

f = open("F:/Python/file_write02.txt", 'w')

 

f.write('\n'.join(list_data))

 

f.close()

(base) F:\Python>python file_w02.py

aaaa

bbbb

cccc

 

 

8.2.2 writelines() 함수

 

writelines 함수를 이용하면 리스트 형태의 자료를 파일로 출력 가능 합니다.  단점은 모두 한줄로 결합되어 출력이 됩니다.

list_data = ['aaaa', 'bbbb','cccc']

f = open("F:/Python/file_write03.txt", 'w')

 

f.writelines(list_data)

 

f.close()

(base) F:\Python>python file_w03.py

aaaabbbbcccc

 

 

8.3 파일 읽기

 

파일을 읽기 모드(r)로 오픈 하는 경우 파일이 존재 하지 않으면 오류가 발생 하므로 try ... except를 사용하여 오류 처리를 하거나 존재 유무를 확인 하고 읽기 모드로 오픈 합니다.

 

8.3.1 read() 함수

 

read(size)의 형태로 사용되면 size를 생략하면 파일을 하나의 문자열로 리턴 합니다.  문제는 파일의 크기가 가용 메모리 범위를 넘어가면 안되기 때문에 size가 큰 파일은 나누어서 읽기를 추천 합니다.  파일의 끝에 도달하면 빈 문자열(‘’)을 리턴 합니다.

try:

   f = open("F:/Python/file_write01.txt", 'r')

 

   data = f.read()

   print(data)

 

except FileNotFoundError as e:

           print(e)

finally:

   f.close()

전체 읽기

(base) F:\Python>python file_r01.py

sum( 1 ) = 1 + 1

sum( 3 ) = 3 + 2

sum( 6 ) = 6 + 3

sum( 10 ) = 10 + 4

sum( 15 ) = 15 + 5

sum( 21 ) = 21 + 6

...(생략)

 

read(size)를 이용하여 파일 읽기. size 만큼 읽어와 출력 합니다.

try:

   f = open("F:/Python/file_write01.txt", 'r')

 

   data = f.read(100)

   print(data)

 

except FileNotFoundError as e:

           print(e)

finally:

   f.close()

100 byte 읽기

(base) F:\Python>python file_r02.py

sum( 1 ) = 1 + 1

sum( 3 ) = 3 + 2

sum( 6 ) = 6 + 3

sum( 10 ) = 10 + 4

sum( 15 ) = 15 + 5

sum( 21 ) =

 

 

8.3.2 readline() 함수

 

열린 파일을 한 라인씩 읽어오는 함수 입니다.  한 라인씩 읽어 오는 동안 계속 해서 읽어올 라인이 없는지 확인 하고 없으면 break로 종료 합니다.

try:

   f = open("F:/Python/file_write01.txt", 'r')

 

   data = f.readline()

   print(data)

 

except FileNotFoundError as e:

           print(e)

finally:

   f.close()

한라인만 읽어와 출력 합니다.

(base) F:\Python>python file_r03.py

sum( 1 ) = 1 + 1

 

 

8.3.3 readlines() 함수

 

파일을 한꺼번에 읽어서 각 라인을 리스트 형태로 반환하는 함수 입니다.

try:

   f = open("F:/Python/file_write01.txt", 'r')

 

   data_list = f.readlines()

   data_length = len(data_list)

   print("list count : " + str(data_length))

   print(data_list[0])

   print(data_list)

 

except FileNotFoundError as e:

           print(e)

finally:

   f.close()

파일의 라인 수와 List의 첫 번째 요소, 전체 출력

(base) F:\Python>python file_r04.py

list count : 100

sum( 1 ) = 1 + 1

 

['sum( 1 ) = 1 + 1\n', 'sum( 3 ) = 3 + 2\n', 'sum( 6 ) = 6 + 3\n', ...(생략)...]



 

8.4 + 사용


개인적으로는 ‘+’를 붙여 사용 하는 것보다 원래의 기능대로 사용하길 추천 합니다.

 

8.4.1 r+


mode‘r+’를 사용하면 읽기와 쓰기가 가능 합니다파일이 존재하지 않으면 오류를 발생 하고특별히 위치를 정하지 않는다면 파일의 처음에 추가가 됩니다.

try:

   f = open("F:/Python/file_write02.txt", 'r+')

 

   f.write("kkk")

  

except FileNotFoundError as e:

           print(e)

finally:

   f.close()

# 실행 전 파일 file_write02.txt

aaaa

bbbb

cccc

# 실행 후 파일 file_write02.txt

kkka

bbbb

cccc

 

 

8.4.2 w+


mode‘w+’를 사용하면 읽기와 쓰기가 가능 합니다파일이 없으면 생성 하고 파일이 존재 하면 내용을 삭제하고 쓰기를 진행 합니다.

try:

   f = open("F:/Python/file_write02.txt", 'w+')

 

   f.write("kkk")

  

except FileNotFoundError as e:

           print(e)

finally:

   f.close()

# 실행 전 파일 file_write02.txt

aaaa

bbbb

cccc

# 실행 후 파일 file_write02.txt

kkk

 

 

8.4.3 a+


mode‘a+’를 사용하면 읽기와 쓰기가 가능 합니다파일이 없으면 오류가 발성 하고 파일이 존재 하면 내용의 끝에 쓰기를 진행 합니다.

try:

   f = open("F:/Python/file_write02.txt", "a+")

  

   f.write("kkk")

  

except FileNotFoundError as e:

           print(e)

finally:

   f.close()

# 실행 전 파일 file_write02.txt

aaaa

bbbb

cccc

# 실행 후 파일 file_write02.txt

aaaa

bbbb

cccckkk


- copy coding -

 

7. 예외처리

 

코딩을 할 때 가장 중요한 건 오류가 발생하지 않도록 하는 것 이지만 데이터의 오류, 시스템 오류, 네트워크 오류는 어쩔 수가 없습니다.  오류를 예측하고 거기에 대한 대응을 미리 해놓을 수 있는 능력이 더 중요할 수 있습니다.

 

7.1 try ... except


try 블록을 실행 하는 동안 오류가 발생하면 곧바로 except 블록이 실행 되며 오류가 발생하지 않는다면 except 블록은 실행되지 않습니다.

 

7.1.1 발생오류를 모르는 경우

 

발생할 오류의 항목을 모르는 경우 오류 항목을 기입하지 않고 except만 적어서 처리를 하는 경우 입니다.

try:

   이런 저런 명령어 처리

except:

   print(“알 수 없는 오류로 인하여 프로그램이 종료 되었습니다.”)

 

python study

 


7.1.2 발생오류 명기


try 블록에서 발생할 오류에 대해 예상이 가능한 경우 오류 항목을 추가하여 처리하는 경우 입니다.

try:

 fd = open(“filename.txt”, ‘r’)

   line = fd.readline()

except FileNotFoundError:

   print(“요청하신 파일을 찾을 수 없습니다.”)

 

발생할 수 있는 오류가 여러 개인 경우 except를 추가 합니다. 

try:

 fd = open(“filename.txt”, ‘r’)

   line = fd.readline()

except OSError:

   print(“OS 오류가 발생 했습니다.”)

except FileNotFoundError:

   print(“요청하신 파일을 찾을 수 없습니다.”)

except:

 print(“알 수 없는 오류가 발생 했습니다.”)

 

 

7.1.3 else (오류 없는 경우)

 

try 블록을 실행하는 동안 오류가 발생하지 않은 경우에만 실행을 하는 블록 입니다.  finally와의 차이점은 finally는 오류가 발생 해도 실행을 하는 블록 입니다.

try:

 fd = open(“filename.txt”, ‘r’)

   line = fd.readline()

except OSError:

   print(“OS 오류가 발생 했습니다.”)

except FileNotFoundError:

   print(“요청하신 파일을 찾을 수 없습니다.”)

except:

 print(“알 수 없는 오류가 발생 했습니다.”)

else:

   print(“오류가 발생하지 않았습니다.”)

 

 

7.1.4 pass (예외상황 회피)

 

예외 상황이 발생 했을 때 프로세스를 중단 하지 않으면서 예외사항을 무시하고 다음 단계로 넘어가기 위한 방법으로 아무일 없었다는 듯 하단 명령을 실행 합니다.

try:

 fd = open(“filename.txt”, ‘r’)

   line = fd.readline()

except OSError:

   print(“OS 오류가 발생 했습니다.”)

except FileNotFoundError:

   pass

 

 

7.1.5 as (오류 클래스 축약)

 

오류 클래스 명이 긴 경우 as를 이용하여 짧은 이름의  alias에 대입 하여 사용할 수 있습니다.

try:

 fd = open(“filename.txt”, ‘r’)

   line = fd.readline()

except OSError as oe:

   print(oe)

except FileNotFoundError as e:

   print(e)

 

 

7.1.6 finally (무조건 실행)

 

try 블록을 실행 하는 동안 오류가 발생해서 프로그램이 종료 되더라도 꼭 실행을 해야 하는 명령어를 finally 블록에 추가 합니다.  대부분 리소스를 반납해야 하는 close 문들입니다.

try:

 fd = open(“filename.txt”, ‘r’)

   line = fd.readline()

finally:

   fd.close()

 

 

 

7.2 예외 만들기

 

raise를 이용하면 사용자가 임의로 예외를 발생시킬 수 있습니다.


7.2.1 내부 예외 클래스 호출


내부에 정의된 예외사항을 사용자가 임의로 호출하여 사용할 수 있습니다.

a = 100

 

if a <= 150:

           try:

                     raise ValueError

                     b = 2500 / a

           except ZeroDivisionError:

                     print("zero div")

           except ValueError:

                     print("number small")

결과

(base) F:\Python>python except001.py

number small

 

7.2.2 사용자 정의 예외 클래스 호출


사용자가 직접 Exception 클래스를 상속받아 새로운 예외 클래스를 생성하여 호출할 수 있습니다.

class UserError(Exception):

           def __init__(self, value):

                     self.value = value

           def __str__(self):

                     return self.value

 

# 신규 예외사항 사용

a = 100

 

if a <= 150:

           try:

                     raise UserError("Number error")

                     b = 2500 / a

           except ZeroDivisionError:

                     print("zero div")

결과

(base) F:\Python>python except002.py

Traceback (most recent call last):

  File "except002.py", line 12, in <module>

    raise UserError("Number error")

__main__.UserError: Number error

 

 

7.3 with

 

with문은 예외처리 라기 보다는 미리 후선 마무리 작업이 정의되어 있는 명령어 입니다.

with open(“filename.txt”) as fd:

    for line in fd:

        print(line, end="")

 

with문은 Object.enter를 호출하고 자동으로 Object.exit를 호출 하도록 만들어진 것으로 별도의 처리를 해주지 않아도 됩니다.

 

 

7.4 Exception 구조 (Python 3.7)

 

파이썬 내장 예외사항 클래스 계층 구조 입니다.  필요한 예외사항이 있으면 사용하면 됩니다.

BaseException

 +-- SystemExit

 +-- KeyboardInterrupt

 +-- GeneratorExit

 +-- Exception

      +-- StopIteration

      +-- StopAsyncIteration

      +-- ArithmeticError

      |    +-- FloatingPointError

      |    +-- OverflowError

      |    +-- ZeroDivisionError

      +-- AssertionError

      +-- AttributeError

      +-- BufferError

      +-- EOFError

      +-- ImportError

      |    +-- ModuleNotFoundError

      +-- LookupError

      |    +-- IndexError

      |    +-- KeyError

      +-- MemoryError

      +-- NameError

      |    +-- UnboundLocalError

      +-- OSError

      |    +-- BlockingIOError

      |    +-- ChildProcessError

      |    +-- ConnectionError

      |    |    +-- BrokenPipeError

      |    |    +-- ConnectionAbortedError

      |    |    +-- ConnectionRefusedError

      |    |    +-- ConnectionResetError

      |    +-- FileExistsError

      |    +-- FileNotFoundError

      |    +-- InterruptedError

      |    +-- IsADirectoryError

      |    +-- NotADirectoryError

      |    +-- PermissionError

      |    +-- ProcessLookupError

      |    +-- TimeoutError

      +-- ReferenceError

      +-- RuntimeError

      |    +-- NotImplementedError

      |    +-- RecursionError

      +-- SyntaxError

      |    +-- IndentationError

      |         +-- TabError

      +-- SystemError

      +-- TypeError

      +-- ValueError

      |    +-- UnicodeError

      |         +-- UnicodeDecodeError

      |         +-- UnicodeEncodeError

      |         +-- UnicodeTranslateError

      +-- Warning

           +-- DeprecationWarning

           +-- PendingDeprecationWarning

           +-- RuntimeWarning

           +-- SyntaxWarning

           +-- UserWarning

           +-- FutureWarning

           +-- ImportWarning

           +-- UnicodeWarning

           +-- BytesWarning

           +-- ResourceWarning

 

- copy coding -


6.3 내장 함수

 

앞의 예제에서 print 또는 del을 사용해 보았는데 이렇게 파이썬 내부에 정의되어 있는 함수를 내장 함수라 부릅니다그리고 내장 함수는 이미 존재하고 있는 함수로 import로 불러오지 않고 바로 호출해서 사용할 수 있는 함수 입니다.

함수는 이름만 잘 만들어도 반은 먹고 들어간다고 했는데 그 말이 사살인지 확인해 볼까요?

 


6.3.1 abs 


음수, 양수 관계없이 단순히 크기만을 나타내기 때문에 음수를 양수로 변환 하는데 사용하기도 합니다.

>>> abs(3)

3

>>> abs(-3)

3

>>> abs(0.0002)

0.0002

>>> abs(-0.0002)

0.0002

 

 

6.3.2 all


자료형을 입력 받아 내부 요소가 모두 참이면 True를 리턴 하고 하나라도 거짓이 있으면 False를 리턴 합니다.

>>> all([1,2,3])

True

>>> all([4,5,1,3])

True

>>> all([4,5,1,0,3])

False

>>> all(('a', 'b', 'c'))

True

>>> all(('a', 'b', 'c', ''))

False

   

python study



6.3.3 any


자료형을 입력 받아 내부 요소가 모두 거짓이면 False를 리턴 하고 하나라도 참이 있으면 True를 리턴 합니다.

>>> any([4,5,1,0,3])

True

>>> any(('', 0))

False


 

6.3.4 chr


아스키(ASCII) 코드값을 입력 받아 문자를 출력 합니다.

# 10 진수

>>> chr(112)

'p'

>>> chr(80)

'P'

# 16 진수

>>> chr(0x50)

'P'

>>> chr(0x70)

'p'

 

 

6.3.5 dir


dir는 입력 받은 객체에 대해 사용할 수 있는 변수와 메소드를 나열해 줍니다.

입력값이 숫자인 경우

>>> dir(1)

['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']

 

입력값이 문자인 경우

>>> dir('a')

['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

 

 

6.3.6 divmod


함수 명에서도 알 수 있듯이 나눗셈의 몫과 나머지를 구하는 함수 입니다숫자가 2개 필요하고 결과를 튜플 형태로 리턴 합니다.

>>> divmod(20, 3)

(6, 2)


 

6.3.7 enumerate


리스트, 튜플, 문자열등을 입력 받아 인텍스와 함꼐 리턴 합니다.

>>> a = [1, 2, 3, 4, 5]

>>> for i, n in enumerate(a):

...   print(i, n)

...

0 1

1 2

2 3

3 4

4 5


  

6.3.8 eval


문자열을 명령어로 변환 하고 실행합니다변환된 명령어가 실행할 수 없으면 오류가 발생 합니다.

# 오류 발생

>>> eval('a' + 'b')

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

  File "<string>", line 1, in <module>

NameError: name 'ab' is not defined

 

# 정상 작동

>>> ab = 555

>>> eval('a' + 'b')

555


 

6.3.9 filter


filter(function, iterable)형태로 iterable 값들을 function을 통해 필터링 하여 결과 값을 반환 합니다. function에 어떤 조건의 데이터만 추출 하는지 정의가 되어야 합니다.

>>> def is_even(x):

...    if x % 2 == 0:

...       return True

...    else:

...       return False

...

>>> r = filter(is_even, [1,2, 3, 4, 5, 6,7])

>>> 

>>> for i in r:

...    print(i)

...

2

4

6

 

lambda도 함수와 같은 역할을 하고 반복 사용하지 않는다고 했는데 기억하시나요.

>>> r2 = list(filter(lambda x : x % 2 == 0,[1,2, 3, 4, 5, 6,7]))

>>> r2

[2, 4, 6]


 

6.3.10 hex


정수를 입력 받아 16진수를 리턴 합니다.

>>> hex(5)

'0x5'

>>> hex(10)

'0xa'

>>> hex(15)

'0xf'


 

6.3.11 id


입력된 객체의 주소값을 리턴 합니다.

>>> a = 'a'

>>> b = a

>>> id(a)

2998919036464

>>> id('a')

2998919036464

>>> id(b)

2998919036464

# a 값 변경

>>> a = 'b'

>>> id(a)

2998919034784

>>> id(b)

2998919036464

a, b, ‘a’는 모두 같은 주소를 바라보고 있습니다. a 값을 변경하면 a만 다른 주소를 바라보게 됩니다.


 

6.3.12 input


사용자로부터 입력값을 받아야 하는 경우 사용하며 input([prompt])를 이용하여 콘솔 창에 프롬프트가 나타나도록 할 수 있습니다.

>>> x = input()

Y

>>> x = input("계속 진행 하시겠습니까?(Y/N) :")

계속 진행 하시겠습니까?(Y/N) :Y

>>> x

'Y'


 

6.3.13 int


정수 형태의 문자나 정수, 실수 등을 입력 받아 정수를 반환 합니다반올림은 하지 않고 실수 형태의 문자는 오류가 발생 합니다.

>>> int('30')

30

>>> int('-45')

-45

>>> int(3.5444)

3

>>> int(-4.99999)

-4

>>> int('8.9999')

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

ValueError: invalid literal for int() with base 10: '8.9999'

 

다른 진수의 값을 10진수로 반환 합니다.

# 2진수 -> 10진수

>>> int('011', 2)

3

# 16진수 -> 10진수

>>> int('0xA', 16)

10

 


6.3.14 isinstance


isinstance(object, type) 형태로 사용하며 objecttype의 인스턴스 인가 확인하여 참이면 True, 거짓이면 False를 반환 합니다. type에는 복수의 데이터 형, 클래스 등이 포함될 수 있습니다.

# 정수가 정수냐?

>>> isinstance(3, int)

True

# 실수가 정수냐?

>>> isinstance(3.0, int)

False

# 실수가 정수 또는 실수냐?

>>> isinstance(3.0, (int, float))

True

# 클래스가 클래스냐?

>>> class OneClass:

...    a = 'aaa'

...

>>> b = OneClass()

>>> c = isinstance(b, OneClass)

>>> c

True

 


6.3.15 len


문자열의 길이 또는 요소의 개수를 리턴 합니다숫자의 개수는 구하지 못합니다.

>>> len('abcdefg')

7

>>> len([1, 2, 3, 4])

4

>>> len(['a', 'b', 'cc'])

3

>>> len((1, 2, 3, 4, 5))

5

>>> len(123)

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

TypeError: object of type 'int' has no len()

 


6.3.16 list


데이터를 입력 받아 list로 반환 합니다.

>>> list('abcdefg')

['a', 'b', 'c', 'd', 'e', 'f', 'g']

>>> list([1,2,3,4,5])

[1, 2, 3, 4, 5]

>>> list((1,2,3,4,5))

[1, 2, 3, 4, 5]


  

6.3.17 map


map(function, iterator)형태로 iterator의 요소들을 하나씩 function에 적용하여 값을 리턴 받아 옵니다.

>>> 

>>> def addFunc(n):

...    return n + n

...

>>> nums = (1, 2, 3, 4, 5)

>>> res = map(addFunc, nums)

>>> print(list(res))

[2, 4, 6, 8, 10]

 

lambda를 이용하여 function을 대체할 수 있습니다.

>>> nums = (1, 2, 3, 4, 5)

>>> result = map(lambda x: x + x, nums)

>>> print(list(result))

[2, 4, 6, 8, 10]

 


6.3.18 max


입력된 값 중 최대 값을 반환 합니다문자와 숫자는 비교할 수 없습니다.

>>> max("PYTHON python")

'y'

>>> max([1, 2, 3, 4.5])

4.5

  


6.3.19 min


입력된 값 중 최소 값을 반환 합니다. 문자와 숫자는 비교할 수 없고 문자 보다 blank가 작은 값입니다.


 

>>> min("PYTHON python")

' '

>>> min([1, 2, 3, 4.5])

1



6.3.20 oct


정수를 입력 받아 8진수로 변환 하여 리턴 합니다.

>>> oct(8)

'0o10'

>>> oct(10)

'0o12'

 


6.3.21 open


open(filename, [mode])의 형태로 filename의 파일을 오픈 합니다오픈 하는 조건은 mode에 따라 달라집니다모드가 생략 되면 읽기 모드로 오픈 합니다.

f = open(“test_file”, “r”)

 

 

6.3.22 ord


문자를 입력 받아 ASCII 코드의 10진수 번호로 리턴 합니다. chr()와 반대 개념입니다.

>>> ord('a')

97

>>> ord('A')

65


 

6.3.23 pow


pow(x, y)x의 값을 y만큼 제곱한 결과를 리턴 합니다.

>>> pow(2, 3)

8

>>> pow(3, 3)

27

 


6.3.24 range


range([start,] stop [,step])의 형태로 일련 번호를 리턴 하며 인수가 하나, , 셋 모두 선택적으로 사용 가능 합니다.


- 인수가 하나인 경우

0 부터 stop 보다 작으며 1씩 증가 하는 값. (0 <= list < stop) 

>>> range(10)

range(0, 10)

>>> list(range(10))

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

 

- 인수가 둘 경우

start 부터 stop 보다 작으며 1씩 증가 하는 값. (start <= list < stop)

>>> range(5, 10)

range(5, 10)

>>> list(range(5, 10))

[5, 6, 7, 8, 9]

 

- 인수가 셋 경우

start 부터 stop 보다 작으며 step씩 증가 하는 값. (start <= list < stop)

. >>> range(5, 10, 2)

range(5, 10, 2)

>>> list(range(5, 10, 2))

[5, 7, 9]

 

 

6.3.25 round


round(number[, ndigits])의 형태로 자릿수가 생략 되면 반올림 한 값을 리턴하고 자릿수가 입력 되면 정해진 자릿수 까지 반올림 된 값으로 표현 합니다.

>>> round(3.5)

4

>>> round(4)

4

>>> round(4.55555, 3)

4.556

 

6.3.26 sorted


입력값을 정렬하여 리턴 하는 함수 입니다.

>>> sorted("python")

['h', 'n', 'o', 'p', 't', 'y']

>>> sorted(['a', 'd', 'b', 'k', 'c'])

['a', 'b', 'c', 'd', 'k']

>>> sorted([5,7,2,4,6,8])

[2, 4, 5, 6, 7, 8]

>>> sorted([5,7,2,4,6,8,2])

[2, 2, 4, 5, 6, 7, 8]

>>> sorted((5,7,2,4,6,8,2))

[2, 2, 4, 5, 6, 7, 8]

 

 

6.3.27 str


입력 받은 값을 문자열 형태로 반환 합니다숫자를 문자와 결합 할 수 있습니다.

>>> str(123)

'123'

>>> str(345) + "abc"

'345abc'

>>> str("python".upper())

'PYTHON'

 

6.3.28 sum


입력된 값을 모두 더한 합을 리턴 합니다.

>>> sum((1, 2, 3))

6

>>> sum([1, 2, 3])

6

 

6.3.29 tuple


입력된 값을 튜플로 형변환 하여 반환 합니다.

>>> tuple("python")

('p', 'y', 't', 'h', 'o', 'n')

>>> tuple([1, 2, 3])

(1, 2, 3)

>>> tuple(('a', 'b', 'c'))

('a', 'b', 'c')

 

6.3.30 type


입력 값의 자료형을 리턴 합니다.

>>> type('a')

<class 'str'>

>>> type(1)

<class 'int'>

>>> type([])

<class 'list'>

 

 

6.3.31 zip


반복형 데이트를 튜플 형태의 쌍으로 묶어 리턴 합니다.

>>> a = [1, 2, 3, 4, 5]

>>> b = ['a', 'b', 'c', 'd', 'e']

>>> for i in zip(a, b):

...    print(i)

...

(1, 'a')

(2, 'b')

(3, 'c')

(4, 'd')

(5, 'e')

>>> list(zip(a, b))

[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e')]

 

서로 쌍의 개수가 맞지 않으면 작은 요소의 수에 맞줍니다.

>>> a = [1, 2, 3, 4, 5]

>>> b = ['a', 'b', 'c', 'd']

>>> list(zip(a, b))

[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]


- copy coding -


1···3456789···12

+ Recent posts