개발 교육 일기

파이썬 교육 Day10(+시험, Numpy 실습, Pandas 실습)

오이띠 2021. 3. 26. 16:22
728x90

오늘은 2주간 공부한 python 개념을 시험을 봤다. 

개념 알려주신 강사님이 설명을 너무 잘하셨는데, 다음 주부터 강사님 바뀐다니 아쉽다.. 

 

시험 문제는 총 30문제이고 다음과 같다. 시간은 총 2시간이였는데, 좀 촉박했다.. (답은 틀린게 있을 수 있음!)

 

 

<시험 30 문제>

 

  1. 스트링과 리스트의 차이점은?

-스트링은 문자열 데이터를 작은따옴표’ , 큰 따옴표“의 쌍으로 텍스트를 감싸서 표현

-리스트는 데이터 목록을 다루는 자료형으로, 리스트를 만들 때 대괄호 []를 사용

-스트링은 변경이 불가능한 자료형이라 문자열의 일부를 변경하는 작업을 할 수 없어, 문자열의 내용을 바꾸고 싶으면 바뀐 내용을 가질 문자열 하나를 새로 만들어줘야함. 반면 리스트는 변경이 가능하고, 다양한 메소드를 이용해 리스트의 중간에 있는 요소까지 변경 가능하다. 

 

2. 튜플과 리스트의 차이점은?

  -리스트를 만들 때 대괄호 []를 사용하는 반면, 튜플은 소괄호 ( )를 이용해 만듦

 -리스트는 변경이 가능하고 튜플은 변경이 불가능함. 예를 들어, 리스트는 참조 연산을 통해 특정 요소에 접근해 데이터를 변경할 수 있지만, 튜플은 허용되지 않음. 또, 리스트는 sort( )메소드를 이용해 요소의 순서 정렬 가능하지만, 튜플은 아예 정렬 메소드가 없어 불가능. 리스트는 새로운 요소를 추가하거나 삽입 가능하고, 기존 요소를 삭제할 수 있지만, 튜플은 이런 작업 허용하지 않음. 

 

3. 얇은 복사와 깊은 복사의 차이점은?

-

 

4. ord() 함수가 필요한 이유는?

-ord( )함수는 사용문자의 내부표현(ASCII 코드)값을 알려주는 함수이다. 이런 점을 이용해, 16진수를 10진수로 만들 때, ord함수를 사용가능하다. 예를 들어, 0xFF를 10진수로 변환하고 싶으면, F가 10진수로 얼마인지 알아야 하고, 방법은 ‘ord(‘F’) – ord(‘A’) +10’를 이용하면 된다. 

 

5. 리스트에서 append() 메소드와 extend() 메소드의 차이점은?

-append()는 리스트의 끝에 새 요소를 추가한다. 예를 들어, a = [1, 2, 3]이라는 리스트에 a.append(4)를 하면, a는 [1, 2, 3, 4]가 된다. 

-반면, extend()는 기존 리스트에 다른 리스트를 이어 붙이는 메소드이며, +연산자와 같은 기능을 한다고 할 수 있다. 예를 들어, a = [1, 2, 3]이라는 리스트에 a.extend([4, 5, 6])을 하면, a는 [1, 2, 3, 4, 5, 6]이 된다. 

 

6. 다중 if 문에서 if  else  어떻게 매치 되나요?

-들여쓴 칸 수를 보고 판단하거나, else문 위의 가장 가까운 if문을 찾는 방법도 있다. 

 

7~9.  다음의 결과를 16진수로 나타내시오.(편의상 정수를 16-bit  가정)

x = -123   y = 21

z1 = x&y   

z2 = x|y  

z3 = x^y

 

x를 2진수로 나타내면, -0b1111011이고, y를 2진수로 나타내면 0b10101이다. 

z1, z2, z3의 16진수는 각각 0x5, -0x6b, -0x70 이다. 

 

10~11. 다음의 결과를 16진수로 나타내시오.(편의상 정수를 16-bit  가정)

x = -123

z1 = x<<3   

z2 = x>>3

 

z1과 z2값은 각각 -0x3d8과 -0x10이다. 

 

12. 함수에서의 디폴트 매개 변수와 키워드 매개 변수에 대해서 비교 설명 하시오.

-디폴트 매개 변수는 기본값 매개변수라고도 불림. 위 예제처럼 test함수를 만들 때, count=1이라고 되어있다. 만약, 함수 호출할 때, count값을 안넣어주면 1이 출력되고, count값을 넣어주면 넣어준 값을 출력해준다. 

-반면, 키워드 매개변수는 test함수의 text변수처럼 매개변수가 많은 경우에는 호출자가 매개변수의 이름을 일일이 지정하여 데이터를 입력해야 한다. 

 

13. 함수에서 다양한 매개 변수의 올바른 순서를 기재 하시오

-지역변수>전역변수??

 

14. 다음 코드 잘못된 이유는?

def func( ):

    x=x+10

x=10

func( )

 

-func()함수 안 x = x + 10에서 두번째 x값을 지정해줄 수가 없어서

 

15. 다음의 복합 객체 자료형을 그리시오.

P = [ (abcd), 10, [ ef, (20, 30) ] ] 

 

 

____________________________________________________________________________________________________________

 

1. 중첩함수는 외부에서 어떻게 접근할  있나?

-중첩함수는 자신이 소속되어 있는 함수 외부에서 보이지 않기 때문에, 소속되어 있는 함수를 통해 접근이 가능하다.

 

2. 다음 코드에서 p 대입 되는 것은 무엇 인가?

p = lambda num : num*num

 

-num이라는 매개변수를 입력 받고, num*num을 리턴해주는 아래 함수

def p(num):

  return num*num

 

3. 표준 라이브러리에 없는 예외는 어떻게 처리 하나?

-Exception 예외를 상속받는 새로운 예외처리  클래스를 만들면 된다. 

 

4. 인스턴스 변수와 클래스 변수의 차이점?

-‘self.변수’로 초기화하면 인스턴스 변수이고, 클래스 변수는 ‘class이름.변수’로 초기화하면 클래스 변수이다. 클래스 변수는 인스턴스들이 서로 공유하고 있기 때문에 클래스와 인스턴스로 접근 가능한 반면, 인스턴스 변수는 클래스로 접근은 가능하나 인스턴스가 생성되지 않았을 때는 무의미하다. 또한, 인스턴스 변수는 각각의 인스턴스 공간에 생성되어 인스턴스만 사용 가능한 반면, 클래스 변수는 클래스 공간에 생성되어 인스턴스와 클래스 모두에서 사용이 가능하다. 

 

5. 인스턴스 메소드와 클래스 메소드 차이점?

-인스턴스 메소드는 ‘def 메소드이름(self, 매개변수’로 선언하고, 인스턴스와 클래스 메소드에 접근이 가능하다. 클래스 메소드는 ‘@classmethod’와 ‘def 메소드이름(cls, 매개변수)’형식으로 선언되며 클래스 변수에 접근이 가능하다. 

 

6. private 접근 지정자와 public 접근 지정자의 차이점 2가지?

-1. Private은 클래스의 안에서만 접근이 가능한 멤버이고, public은 안과 밖 모두에서 접근이 가능하다. 

-2. 파이썬은 private과 public을 작명법으로 구분한다. 프라이빗 멤버는 접두사에 두개의 밑줄(예를 들어, __num)이 들어가야 하고, 접미사는 밑줄 한 개까지만 허용한다. 접두사에 밑줄이 없으면 public 접근 지정자이다. 

 

7. 객체 지향 프로그래밍을 위해서 private 멤버가 필요한 이유는?

-private 멤버는 클래스 내부에서만 접근이 가능한 멤버로서, 외부에서는 직접적인 private 멤버변수 접근이 불가능하다. 따라서, 클래스의 보안을 위해 private 멤버가 필요하다. 

 

8. 클래스 멤버 변수를 private 접근 지정자로 하면 발생하는 문제는?

-클래스를 상속받은 인스턴스에서 해당 private 변수에 접근할 수 없다. 

 

9. super() 함수가 필요한 이유는?

-부모 클래스가 다른 클래스로 교체되거나 수정되어도 자식 클래스가 받는 영향을 최소화할 수 있기 때문

 

10. 객체에서 다형성이란 무엇이며, 어떻게 구현 하나?

-다형성이란 많은 형태를 가지고 있다는 의미이며, 객체지향 프로그래밍에서는 오버라이딩으로 구현한다. 오버라이딩은 ‘부모 클래스로부터 상속받은 메소드를 재정의’하는 것을 의미한다. 

 

11. 객체에서는 어떤 식으로 함수에 접근하고 데코레이터 하나?

-데코레이터의 생성자를 이용하거나, ‘@데코레이터’를 데코레이트할 함수 앞에 붙인다.

 

12. 추상 기반 클래스를 사용하는 이유는?

-추상 기반 클래스는 자식 클래스가 갖춰야 할 메소드를 강제하는 기능으로, 만약 추상 기반 클래스가 요구하는 메소드를 자식 클래스가 구현하지 않았다면 자식 클래스의 인스턴스를 생성할 때 TypeError 예외를 일으킴.

 

13. 3가지 파일 버퍼링 대해서 설명하시오

-

 

14. 파일의 접근모드 r+ w+  차이점?

-r+와 w+는 모두 읽기 또는 쓰기 모드지만, r+의 경우 파일이 없는 경우 에러를 발생시키지만, w+의 경우 파일이 없는 경우 새로 만든다. 

 

15. pack()/unpack() 함수 필요한 이유는?

-pack()함수는 일반 데이터를 bytes 형식으로 변환하는 기능을, unpack()함수는 bytes 형식을 튜플 형식으로 변환하는 기능을 갖고 있어서

 

 

__________________________________________________________________________________________________________________________

 

<Numpy와 Pandas 실습>

 

https://github.com/Heez27/AI_Edu/tree/main/Day10

728x90