본문 바로가기
반응형

전체 글385

파이썬 numpy 배열 데이터 저장하고 불러오기 numpy 배열을 저장하고 불러오는 방법은 아래와 같습니다. 확장자는 npy 입니다. import numpy as np #배열 생성 data=np.array([1,2,3,4,5]) #저장 np.save('mydata.npy',data) #불러오기 data_loaded=np.load('mydata.npy') 2023. 11. 16.
[파이썬] for문에 변수 여러개 사용하기 (i,j,k) 아래 예시를 통해 이해해봅시다. #리스트 생성 li=[[1,10,100],[2,20,200],[3,30,300]] #for문 for i,j,k in li : print('i:{} j:{} k:{}'.format(i,j,k)) 결과는 아래와 같습니다. i:1 j:10 k:100 i:2 j:20 k:200 i:3 j:30 k:300 2023. 9. 7.
[파이썬] 함수의 가변인자 입력값을 닥셔너리로 넣는 법 아래와 같이 딕셔너리를 가변인자로 입력받는 함수가 있다고 합시다. def vars1(**param) : print(param) 인자는 아래와 같이 입력하면 됩니다. >>> vars1(age=16,height=172,weight=73) {'age': 16, 'height': 172, 'weight': 73} 만약 변수로 정의된 딕셔너리의 각 원소를 가변인자로 넣고 싶다면 아래와 같이 하면 됩니다. >>> dic={'age':16,'height':172,'weight':73} >>> vars1(**dic) {'age': 16, 'height': 172, 'weight': 73} 2023. 5. 26.
[파이썬] 함수의 가변인자 입력값을 튜플로 넣는 법 아래와 같이 가변인자를 입력받는 함수가 있다고 합시다. def vars1(*lst) : print(lst) 인자는 아래와 같이 입력하면 됩니다. vars1(1,2,3,4,5) 만약 변수로 정의된 튜플의 각 원소를 가변인자로 넣고 싶다면 아래와 같이 하면 됩니다. tu=(1,2,3,4,5) vars(tu) >>> vars1(*tu) (1, 2, 3, 4, 5) 만약 *을 붙이지 않으면 tu 전체가 하나의 인자로 입력됩니다. >>> vars1(tu) ((1, 2, 3, 4, 5),) 2023. 5. 26.
[파이썬] 함수에 여러 값 원하는 만큼 입력받기 (가변인자) 1. 여러 값을 입력받고 튜플로 저장하기 변수 이름 앞에 *을 붙여줍니다. def vars1(*lst) : print(lst) 함수를 사용해봅시다. 콤마로 구분하여 여러 값을 입력하면 됩니다. >>> vars1(1,2,3,4,5) (1, 2, 3, 4, 5) 값이 튜플 형태로 저장된 것을 알 수 있습니다. 2. 여러 값을 입력받고 딕셔너리로 저장하기 변수 이름 앞에 **를 붙여줍니다. def vars2(**dic) : print(dic) 함수를 사용해봅시다. key:value 쌍을 key=value 형태로 입력하면 됩니다. 콤마로 구분하여 입력합니다. >>> vars2(age=13,height=172,weight=73) {'age': 13, 'height': 172, 'weight': 73} 2023. 5. 26.
[파이썬 클래스] 원본 변수가 바뀌는 경우 해결 (copy 함수를 사용해야 하는 이유) 아래 코드를 봅시다. 어떻게 동작하는지 먼저 이해해봅시다. class add : def __init__(self,lst): self.lst=lst.append(5) a=[1,2,3,4,5] mcls=add(a) 위 코드는는 a를 [1,2,3,4,5,5] 으로 바꾸고 mcls.list 에는 아무것도 저장되지 않습니다. 결과는 아래와 같습니다 . >>> a [1, 2, 3, 4, 5, 5] >>> mcls.list list.append(5) 의 결과가 none 이기 때문입니다. 클래스 안의 def 에서 변수를 입력받을 때 참조해서 가져오기 때문에 append 를 적용하면 원본인 a가 바뀝니다. 변수를 참조가 아닌 복사해서 가져오는 방법은 아래와 같습니다. copy 함수를 사용하면 됩니다. class add .. 2023. 5. 25.
[파이썬] 함수는 입력되는 변수를 참조로 가져온다 (copy함수의 사용) 아래 코드를 봅시다. def add(lst) : lst.append(6) a=[1,2,3,4,5] add(a) 이 코드에서 a를 출력하면 무엇이라고 나올까요? 아래와 같은 결과가 나옵니다. >>> a [1, 2, 3, 4, 5, 6] 함수에 변수가 입력되면 변수를 참조해서 가져오기 때문에 원래 변수가 변하게 됩니다. 변수를 참조하지 않고 가져오려면 아래와 같이 copy 함수를 사용해야 합니다. def add(lst): new_lst = lst.copy() # 또는 new_lst = list(lst) new_lst.append(5) return new_lst a = [1, 2, 3, 4, 5] result = add(a) 결과는 아래와 같습니다. >>> a [1, 2, 3, 4, 5] 2023. 5. 25.
[파이썬 클래스] 원본 변수가 바뀌는 경우 해결 (copy 함수를 사용해야 하는 이유) 아래 코드를 봅시다. 어떻게 동작하는지 먼저 이해해봅시다. class add : def __init__(self,lst): self.lst=lst.append(5) a=[1,2,3,4,5] mcls=add(a) 위 코드는는 a를 [1,2,3,4,5,5] 으로 바꾸고 mcls.list 에는 아무것도 저장되지 않습니다. 결과는 아래와 같습니다 . >>> a [1, 2, 3, 4, 5, 5] >>> mcls.list list.append(5) 의 결과가 none 이기 때문입니다. 클래스 안의 def 에서 변수를 입력받을 때 참조해서 가져오기 때문에 append 를 적용하면 원본인 a가 바뀝니다. 변수를 참조가 아닌 복사해서 가져오는 방법은 아래와 같습니다. copy 함수를 사용하면 됩니다. class add .. 2023. 5. 25.
[파이썬 클래스와 객체지향] 7. 객체지향 3단계 4강에서 작성한 코드를 객체지향 형태로 바꿔봅시다. 4강에서 작성한 코드는 아래와 같습니다. mylist=[] mnum=0 #def usem() while True : print() #한 줄 띄기 print('Adding member : press a') print('searching member : press b') print('using membership coupon : press c') action=input('press button ') if action=='a' : print() #한 줄 띄기 #inputs name = input('enter your name? ') name = name.lower() # force lowercase age = int(input('enter your age? .. 2023. 5. 24.
[파이썬 클래스와 객체지향] 6. 객체지향 2단계 3강에서 작성한 코드를 객체지향 형태로 바꿔봅시다. 3강에서 작성한 코드는 아래와 같습니다. mylist=[] mnum=0 #def usem() while True : print() #한 줄 띄기 print('Add member : press a') print('search member : press b') action=input('press button ') if action=='a' : print() #한 줄 띄기 #inputs name = input('enter your name? ') name = name.lower() # force lowercase age = int(input('enter your age? ')) sex = input('enter your sex? ') sex = sex.low.. 2023. 5. 24.
[파이썬 클래스와 객체지향] 5. 객체지향 1단계 우리는 지난시간까지 절차지향 방법을 이용하여 헬스장 회원관리 코드를 작성해보았습니다. 2강에서 가장 간단한 형태의 코드를 작성하고 3강과 4강에서 기능을 추가했습니다. 이번 시간부터 클래스를 사용한 객체지향 프로그래밍을 해볼 것입니다. 2,3,4 강의 예제를 객체지향형태로 수정해볼 것입니다. 이번 시간에는 2강의 예제를 객체지향 형태로 수정해봅시다. 2강에서 만든 코드는 아래와 같습니다. mylist=[] while True : print() #한 줄 띄기 #inputs name = input('enter your name ') name = name.lower() # force lowercase age = int(input('enter your age ')) sex = input('enter your s.. 2023. 5. 24.
[파이썬 클래스와 객체지향] 4. 절차지향 3단계 우리는 헬스장 회원관리 예제를 이용하여 파이썬 객체지향을 공부하고 있습니다. 지난시간에는 절차지향 방식으로 코드를 만들었습니다. 오늘은 절차지향 마지막 시간입니다. 지난 시간에 만든 코드는 아래와 같습니다. mylist=[] mnum=0 while True : print() #한 줄 띄기 print('Add member : press a') print('search member : press b') action=input('press button ') if action=='a' : print() #한 줄 띄기 #inputs name = input('enter your name ') name = name.lower() # force lowercase age = int(input('enter your age.. 2023. 5. 23.
[파이썬 클래스와 객체지향] 3. 절차지향 2단계 우리는 헬스장 회원관리 예제를 이용하여 파이썬 객체지향을 공부하고 있습니다. 지난시간에는 절차지향 방식으로 코드를 만들었습니다. 지난 시간에 만든 코드는 아래와 같습니다. mylist=[] while True : print() #한 줄 띄기 #inputs name = input('enter your name ') name = name.lower() # force lowercase age = int(input('enter your age ')) sex = input('enter your sex ') sex = sex.lower() # force lowercase mcount=int(input('enter your membership count ')) #membership count #define dict .. 2023. 5. 21.
[파이썬 클래스] 메소드들의 순서가 상관 없는 이유 파이썬에서는 메소드들의 정의 순서를 고려하지 않아도 됩니다. 예를 들어, A 메소드에서 B 메소드를 호출하는 경우에도 A 메소드를 정의한 이후에 B 메소드를 정의해도 문제 없이 동작합니다. 아래는 예시입니다. class MyClass: def A(self): self.B() print("A 메소드 실행") def B(self): print("B 메소드 실행") obj = MyClass() obj.A() 이는 파이썬 인터프리터가 클래스를 처리할 때, 클래스의 모든 메소드를 먼저 메모리에 로드하고, 그 후에 실행하기 때문입니다. 따라서 메소드 내에서 다른 메소드를 호출하더라도 해당 메소드가 이미 메모리에 로드되어 있기 때문에 문제없이 실행됩니다. 2023. 5. 19.
[파이썬] 에러를 발생시키는 방법 (raise) 에러를 발생시킬 때는 raise 라는 명령어를 사용합니다. 사용 방법은 크게 세 가지가 있습니다. 1. 파이썬에서 미리 정의된 클래스 사용 파이썬에서는 예외 처리를 위해 아래와 같은 클래스를 정의해놓았습니다. ValueError: 값이 적절하지 않을 때 발생하는 예외입니다. TypeError: 연산이나 함수 호출 등에서 예상한 데이터 타입과 다른 형식의 객체를 사용할 때 발생하는 예외입니다. NameError: 정의되지 않은 변수나 함수를 사용하려고 할 때 발생하는 예외입니다. IndexError: 리스트, 튜플 등의 시퀀스에서 인덱스가 범위를 벗어날 때 발생하는 예외입니다. KeyError: 딕셔너리에서 존재하지 않는 키를 사용하려고 할 때 발생하는 예외입니다. FileNotFoundError: 파일을.. 2023. 5. 17.
[파이썬 클래스와 객체지향] 2. 절차지향 1단계 이번 시간부터 '헬스장 회원등록 예제' 코드를 함께 작성할 것입니다. 2,3,4 강에서는 절차지향 방식으로 코드를 작성하고 5,6,7 강에서 클래스를 도입하여 객체지향 방식으로 코드를 수정해 볼 것입니다. 아래 세가지 조건을 만족하는 코드를 짜면 됩니다. 1) 헬스장 회원의 이름, 나이, 성별, 회원권 횟수를 입력받는 코드를 작성하시오. 2) input 을 사용하여 정보를 입력받으시오 3) 입력받은 정보는 dict 형태로 저장하고, 각 회원의 dict 는 list 안에 저장하시오 전체 코드를 보여드리고 각각을 자세히 설명하는 방식으로 진행하겠습니다. mylist=[] while True : print() #한 줄 띄기 #inputs name = input('enter your name ') name = .. 2023. 5. 16.
[파이썬 클래스와 객체지향] 1. 어떻게 공부할 것인가? 아래 글을 읽고 클래스의 아주 기초적인 개념은 이해하신 상태라고 가정하고 수업을 진행하겠습니다. https://pybasall.tistory.com/358 [파이썬] 클래스와 객체지향 정말 쉽게 이해하기 클래스와 객체지향 프로그래밍 클래스는 리스트나 딕셔너리 처럼 데이터를 편하게 관리하기 위해 고안된 도구입니다. 그 성능이 워낙 강력해서 패러다임이 등장하기까지 했습니다. 클래스를 pybasall.tistory.com 본 수업에서는 한가지 예제를 통해서 파이썬 클래스와 객체지향이 무엇인지 공부해보려고 합니다. 객체지향과 반대되는 것이 절차지향인데요. 코딩을 처음 배우시는 분들은 절차지향 방식을 먼저 배우게 됩니다. 그러다가 클래스라는 것을 배우고 나면 객체지향으로 코딩을 할 수 있게 되는데요. 이 수업에서.. 2023. 5. 16.
[파이썬] 시도해보고 안되면 다른 문장 실행 (try except,오류 예외처리) try except 문을 설명하기 위해 두 숫자를 입력받아서 두 숫자의 합을 반환하는 함수를 하나 만들어보았습니다. def mysum(a,b) : return a+b 만약 a와 b 자리에 숫자가 아닌 문자를 입력하면 아래와 같은 오류가 발생합니다. >>> mysum(1,'hi') Traceback (most recent call last): File "", line 1, in File "", line 2, in mysum TypeError: unsupported operand type(s) for +: 'int' and 'str' 숫자가 아닌 값이 입력될 경우 우리가 원하는 오류 메시지를 출력하고 싶다고 합시다. 아래는 try except 문을 이용하여 '숫자가 아닙니다' 라는 메시지를 출력하는 방법입니.. 2023. 5. 15.
[파이썬]리스트 안에 여러 딕셔너리가 들어있는데, 각 딕셔너리에서 첫번째 value 값만 가져오는 방법 코드는 아래와 같습니다. my_list = [{"key1": "value1_1", "key2": "value1_2"}, {"key1": "value2_1", "key2": "value2_2"}] first_values = [] for my_dict in my_list: first_values.append(list(my_dict.values())[0]) print(first_values) 2023. 5. 13.
[파이썬] 클래스 정의할 때 self 대신 다른 이름를 써도 될까 self가 아닌 다른 이름을 사용해도 상관없습니다. class mycle : def __init__(self22): self22.name='hi' self22.age=15 self22.weight=75 관례적으로 self 를 쓰는 것인데, self 쓰지 않으면 코드가 많이 헷갈릴 겁니다. 2023. 5. 12.
[파이썬] cmd 창에서 파이썬 파일 실행하기 먼저 파이썬 파일을 하나 만들어서 준비해둡니다. 내용은 아래 내용을 입력합니다. print('hello this is python') ex.py 라고 이름을 붙였고, 저는 아래 경로에 저장하였습니다. 윈도우키+R 을 눌러서 실행창이 뜨면 cmd 라고 입력하고 실행합니다. 아래와 같은 cmd 창이 뜹니다. python 이라고 입력해봅니다. 아래와 같이 파이썬의 대화형 환경이 실행됩니다. 만약 실행되지 않는다면 [내컴퓨터]-[속성]-[고급 시스템 설정]-[환경변수]-[사용자 변수] 의 Path 에 파이썬 exe 폴더 경로를 추가해주어야 합니다. Ctrl+z 를 입력하고 엔터를 눌러 파이썬 대화형 환경을 종료합니다. cd 명령어를 이용해서 ex.py 가 있는 폴더경로로 이동합니다. 이제 ex.py를 실행시켜봅.. 2023. 5. 11.
[파이썬] 비주얼 스튜디오 코드에서 터미널, Command Prompt, PowerShell 이해하기 비주얼 스튜디오 코드를 파이썬 IDE로 사용하고 있습니다. 우측 상단에 ▷ (run python file) 을 누르면 하단에 TERMINAL 탭이 생기면서 제가 만든 파이썬 파일인 ex.py 가 실행됩니다. 만약 Shift+Enter 을 누르면 아래와 같이 대화형 파이썬 창이 뜹니다. 파이썬셸과 비슷한 기능을 합니다. run python file 은 두가지 방법으로 실행할 수 있습니다. 아래 그림처럼 + 버튼을 펼치고 Select Default Profile 을 클릭합니다. 아래 그림처럼 상단 검색창이 펼쳐집니다. 여기서 Command Prompt 또는 PowerShell 을 선택할 수 있습니다. Windows PowerShell 도 있는데, 경로가 같은 것을 보니 PowerShell 과 동일한 것 같습.. 2023. 5. 11.
[파이썬] 클래스에 정의된 인스턴스 변수 보는 법 (vars) 아래와 같은 클래스를 하나 정의합시다. class mycle : def __init__(self): self.name='hi' self.age=15 self.weight=75 인스턴스를 하나 만들어줍시다. model1=mycle() 인스턴스 변수는 아래와 같이 확인합니다. >>> vars(model1) {'name': 'hi', 'age': 15, 'weight': 75} 2023. 5. 11.
[파이썬] 문자열도 클래스다 (리스트,튜플,딕셔너리도) 파이썬에서 제공하는 문자열도 클래스입니다. 우리가 문자열을 정의하면, 문자열이라는 instance 가 만들어지는 것입니다. 문자열 클래스에 정의되어 있는 메소드들을 우리가 정의한 문자열에 사용할 수 있습니다. 문자열을 하나 정의해봅시다. mystr='HiHello' type 함수를 적용해봅시다. >>> type(mystr) str 이라는 class 라고 반환합니다. str 클래스에 있는 lower 메소드를 사용해봅시다. >>> mystr.lower() 'hihello' 문자열 뿐만 아니라 파이썬에서 제공하는 자료구조인 리스트,튜플,딕셔너리도 클래스입니다. 2023. 5. 11.
[파이썬] 클래스 만드는 방법 파이썬에서 클래스를 만드는 방법은 아래와 같습니다. 이해를 돕기 위해 변수를 몇개 정의하였습니다. class 클래스 이름 : def __init__(self,param1,param2,...) self.name='hi' #입력값 없이 정의해도됨 self.age=param1 #변수 이름과 입력값 이름 달라도됨 def 함수이름1(self,param1,param2,...) 파이썬 클래스의 특징을 살펴봅시다. 1) 클래스 이름은 CamelCase 로 짓는 것이 관례임. 2) __init__ 은 initialize 의 약어임. 초기화한다는 의미로, 변수들의 초기값을 지정하는 역할을 함. 3) __init__ 이 맨 위에 와야하는 것은 아님, 아래와 같은 구성도 가능. class mycle : def myfun1(s.. 2023. 5. 11.
[파이썬] 함수 밖에서 선언된 변수를 함수 안에서 변경하는 방법 아래와 같이 두개의 변수를 선언해봅시다. name='' score=0 어떤 함수에 이름과 점수를 입력함녀 위에서 정의한 변수가 바뀌도로 하고 싶은 상황입니다. 함수 안에서 선언된 변수는 함수가 실행될 때 생성되고, 실행 후에는 사라지기 때문에 함수 밖에 있는 변수에 영향을 줄 수 없습니다. 이런 경우 사용하는 명령어가 global 입니다. 아래와 같이 함수를 정의하면 됩니다. def myfun(your_name,your_score) : global name, score name=your_name score=your_score 코드를 실행하고 함수를 사용해봅시다. >>> myfun('scott',77) >>> name 'scott' >>> score 77 변수가 변경된 것을 알 수 있습니다. 2023. 5. 6.
[파이썬 재밌는 예제] 트럼프 카트 만들고 랜덤하게 뽑기 문제) 트럼프카드는 무늬(suit)와 순위의 조합으로 만들어진 카드입니다. 무늬는 스페이드, 다이아몬드, 하트, 클로버의 네가지가 있습니다. 순위는 Ace,2,3,4,5,6,7,8,9,10,J,Q,K 입니다. 4개의 무늬와 13개 순위의 조합이므로 총 52개의 카드가 만들어집니다. 아래와 같이 무늬튜플과 순위튜플이 주어져 있습니다. SUIT = ('Spades', 'Hearts', 'Clubs', 'Diamonds') RANK = ('Ace', '2', '3', '4', '5', '6', '7', '8', '9','10', 'Jack', 'Queen', 'King') 이 튜플을 이용하여 트럼프 카드를 만들어보세요. 결과는 아래와 같이 딕셔너리를 원소로 갖는 리스트 형태여야 합니다. [{'rank': 'A.. 2023. 5. 4.
[파이썬] 리스트의 모든 원소 반올림 하는 방법 파이썬의 내장함수인 round 함수는 리스트에 적용할 수 없습니다. 리스트에 적용이 가능한 반올림 함수는 numpy 패키지의 round 함수입니다. 먼저 넘파이 패키지를 불러옵시다. import numpy as np 아래와 같은 리스트를 하나 만들어줍시다. a=[1.11,2.22,3.33,4.44,5.55] np.round 함수를 이용하여 반올림을 해줍시다. >>> np.round(a,1) array([1.1, 2.2, 3.3, 4.4, 5.6]) 리스트의 차원이 더 높아도 가능한지 확인해봅시다. >>> b=[[1.11,2.22],[3.33,4.44]] >>> np.round(b,1) array([[1.1, 2.2], [3.3, 4.4]]) 가능합니다. 2023. 5. 3.
[파이썬] 변수가 두개인 for문 예시 for 문에 들어 있는 i나 j를 변수라고 부릅니다. for 문을 중첩하지 않고도 변수를 여러개 사용할 수 있습니다. 아래는 변수를 여러개 사용하는 예시입니다. import numpy as np a=[[75,185],[65,177],[55,156]] bmi_list=[] for weight,height in a : bmi=weight/(height/100)**2 bmi_list.append(bmi) bmi_list=np.round(bmi_list,1) bmi_list 에 저장된 값은 아래와 같습니다. >>> bmi_list array([21.9, 20.7, 22.6]) 2023. 5. 3.
[파이썬] 리스트 원소를 복사할 때 기존 리스트 영향 안받게 복사하기 1. 종속적인 복사 (얕은 복사) 아래와 같은 리스트가 있다고 합시다. a=[1,2,3,4,5] a를 b에 아래와 같이 복사합시다. b=a 만약 a를 변경하면 b도 변경됩니다. >>> a.remove(1) >>> b [2, 3, 4, 5] a를 변경해도 b는 변경되지 않도록 복사하고 싶은 경우 사용하는 방법이 copy 메소드입니다. 2. 독립적인 복사 (깊은 복사) a를 다시 정의하고 아래와 같이 복사합시다. >>> a=[1,2,3,4,5] >>> b=a.copy() a를 변경해도 b가 변하지 않습니다. >>> a.remove(1) >>> b [1, 2, 3, 4, 5] 2023. 5. 3.
반응형