20181214hw

13779 단어
면접 문제 연습
1 1.
a = 1
def fun(a):
    a = 2
fun(a)
print (a)  
 1
a = []
def fun(a):
    a.append(1)
fun(a)
print(a)
[ 1 ]

2. 클래스 변수가 무엇인지, 실례 변수가 무엇인지 간략하게 설명하고 다음 프로그램의 출력 결과를 관찰하십시오
클래스 변수:설명
class Person:
    name="aaa"
p1=Person()
p2=Person()
p1.name="bbb"
print(p1.name)  
print(p2.name) 
print(Person.name) 
bbb
aaa
aaa

3. 다음 문장에 어떤 폐단이 있는지,name가 원조였을 때 프로그램은 어떤 결과를 얻었는지, 어떻게 피했는지
"hi there %s" % name


"hi there {}".format( name )

4. 다음 코드를 읽고 A0, A1에서 An까지의 최종 값을 쓰십시오.
A0 = dict(zip(('a','b','c','d','e'),(1,2,3,4,5)))
A1 = range(10)
A2 = [i for i in A1 if i in A0]
A3 = [A0[s] for s in A0]
A4 = [i for i in A1 if i in A3]
A5 = {i:i*i for i in A1}
A6 = [[i,i*i] for i in A1]
A0 = { 'a' = 1 , 'b' = 2 ,'c' = 3 , 'd' = 4 , 'e' = 5 }
A1 = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ]
A2 = [ ]
A3 = [ 1 , 2 , 3 , 4 , 5 ]
A4 = [ 1 , 2 , 3 , 4 , 5 ]
A5 = { 1 , 4 , 9 , 16 , 25 , 36 , 49 , 64 , 81 }
A6 = [ [ 1 , 1 ] , [ 2 , 4 ] , [ 3 , 9 ] , [ 4 , 16 ] , [ 5 , 25 ] , [ 6 , 36 ] , [ 7 ,49 ] , [ 8 , 64 ] , [ 9 , 81 ] ]

5. 당신은 어떻게 서로 다른 버전의 코드를 관리합니까?
github로 프로젝트 관리
6. 다음 코드는 무엇을 출력합니까?
def f(x,l=[]):
    for i in range(x):
        l.append(i*i)
    print(l)
f(2)
f(3,[3,2,1])
f(3)
[ 0 , 1 ]
[ 3 , 2 , 1 , 0 , 1 , 4 ]
[ 0 , 1 , 0 , 1 , 4 ]

7. 이 두 파라미터는 무슨 뜻입니까? *args,**kwargs?우리는 왜 그것들을 사용해야 합니까?
*args: 가변 매개변수
0 개 혹은 임의의 매개 변수를 전송할 수 있습니다. 이 가변 매개 변수는 함수 호출 시 자동으로tuple로 조립됩니다.
**kwargs: 키워드 매개 변수
0 개 혹은 임의의 매개 변수 이름을 포함하는 매개 변수를 전송할 수 있으며, 이 키워드 매개 변수는 함수 내부에서 자동으로 dict로 조립됩니다
8. 다음 코드를 읽으면 출력 결과가 무엇입니까?
class A(object):
    def go(self):
        print "go A go!"
    def stop(self):
        print "stop A stop!"
    def pause(self):
        raise Exception("Not Implemented")
class B(A):
    def go(self):
        super(B, self).go()
        print "go B go!"
class C(A):
    def go(self):
        super(C, self).go()
        print "go C go!"
    def stop(self):
        super(C, self).stop()
        print "stop C stop!"
class D(B,C):
    def go(self):
        super(D, self).go()
        print "go D go!"
    def stop(self):
        super(D, self).stop()
        print "stop D stop!"
    def pause(self):
        print "wait D wait!"
class E(B,C): pass
a = A()
b = B()
c = C()
d = D()
e = E()
#            
a.go()
b.go()
c.go()
d.go()
e.go()
go A go!
go A go!
go B go!
go A go!
go C go!
go A go!
go C go!
go B go!
go D go!
go A go!
go C go!
go B go!
a.stop()
b.stop()
c.stop()
d.stop()
e.stop()
stop A stop!
stop A stop!
stop A stop!
stop C stop!
stop A stop!
stop C stop!
stop D stop!
stop A stop!
stop C stop!
a.pause()
b.pause()
c.pause()
d.pause()
e.pause()

9.list의 중복 요소를 삭제하기 위해 파이톤 코드를 작성하십시오
list1 = list( set( list1 ) )

 
10. 작은따옴표, 큰따옴표, 작은따옴표의 차이
                   
   ,           ,                   
      ,         
3               :   
                                     
                             
python               ,                     ,             ,          /n /t     ,                  
          
          
              
        ,          

 
11. 함수를 쓰고 문자열을 입력하여 역순 배열의 결과를 되돌려줍니다
입력: string_reverse(‘abcdef'), 되돌아오기:'fedcba', 당신이 생각할 수 있는 여러 가지 방법을 적으세요.
str1 = input( ' Input a string : ' )
#    
print( str1[ : : -1 ] )
#    
l = list( str1 )
l.reverse()
print( ''.join( l ) )

 12.단일 모델(Singleton Pattern)은 일반적인 소프트웨어 디자인 모델로 이 모델의 주요 목적은 특정한 종류가 하나의 실례만 존재하도록 확보하는 것이다.현재 우리가 배운 지식을 이용하여 창설된 클래스를 단일 실례 모델로 만들려고 시도하다
class Demo(): 
      count = 0 
      def test(self): 
          l = [] 
          def wrapper(self , *args ,**kw): 
              if len( l ) == 0: 
                  l.append( f( self , *args , **kw ) ) 
              return l[0] 
          return wrapper 
         
      @test 
      def __init__(self): 
             pass

 
프로그래밍 연습
1. 점(Point) 클래스와 직선(Line) 클래스를 정의하고 getLen 방법으로 직선의 길이를 얻을 수 있습니다.`?^$q=:dI
팁:
  • 점A(X1,Y1),점B(X2,Y2)를 설치하면 두 점으로 구성된 직선 길이|AB|=√(x1-x2)2+(y1-y2)2)
  • 파이톤에서 루트 번호를 계산하려면 math 모듈의 sqrt 함수
  • 를 사용할 수 있습니다.
  • 선은 두 점으로 구성되어야 하므로 초기화할 때는 두 점(Point) 객체가 매개변수로 사용됩니다
  • .
    import math
    
    class Point():
        def __init__( self , x , y ):
            self._x = x
            self._y = y
    
        def getX(self):
            return self._x
    
        def setX( self , x ):
            self._x = x
    
        def getY(self):
            return self._y
        
        def setY( self , y ):
            self._y = y 
        
        def point_info( self ):
            return ( self._x , self._y )
    
    
    class Line():
        _points = []
        def __init__( self , point1 , point2 ):
            self._points.append( point1 )
            self._points.append( point2 )
    
        def setPoint( self , point , n ):
            self._points[ n - 1 ] = point
    
        def getPoint( self , n ):
            return self._points[ n -1 ]
    
        def getLen( self ):
            dx = self._points[ 0 ].getX() -self._points[ 1 ].getX()
            dy = self._points[ 0 ].getY() -self._points[ 1 ].getY()
            return math.sqrt( dx ** 2 + dy ** 2 )
    
    
    p1 = Point( 1 , 1 )
    p2 = Point( 2 , 2 )
    
    l = Line( p1 , p2 )
    
    print( l.getLen() )

    2. 리스트[1,2,3,4,5], 맵() 함수로 [1,4,9,16,25]를 출력하고 리스트 유도식으로 10보다 큰 수를 추출하여 최종 출력[16,25]
    l = [ 1 , 2 , 3 , 4 , 5 ] 
    l2 = []
    
    g =  map( lambda i : i ** 2 , l ) 
    
    for i in g:
        l2.append( i ) 
    
    l3 = [ i for i in l2 if i > 10 ]
    print( l2 ) print( l3 )

    3. 탱크
    어떤 전역에서 정보 상호작용을 편리하게 하기 위해 아군 정찰부서는 이번 전역의 관건적인 고지 좌표를 (x=0, y=0)로 설정하고 동쪽으로 100m, x가 1, 북쪽으로 100m, y가 1씩 증가하도록 규정했다.이 동시에 아군 정보부도 적군이 탱크에 보낸 지휘 신호를 해독했는데 그 중에서 세 가지 신호(L, R, M)는 탱크의 운동을 제어하는 데 사용되었다. L과 R은 각각 탱크를 왼쪽, 오른쪽으로 돌리게 하고 M은 탱크를 100미터로 직선으로 진입시키며 다른 신호는 T가 시간과 동기화하는 데 사용되고 P는 위치가 비교적 정확하다는 것을 나타냈다.
    어느 날 아군 정찰병이 적군의 탱크를 발견하자 정찰병은 즉시 탱크가 있는 좌표(P, Q)와 탱크의 전진방향(W:서, E:동, N:북, S:남)을 지휘부에 보내고 신호 수신기를 가동하여 탱크가 수신한 신호를 실시간으로 지휘부에 동시 발송했다. 지휘부는 이 정보에 따라 이 탱크의 위치를 실시간으로 장악하고 유탄포를 사용하여 이 탱크를 정확하게 격파했다.
    합리적인 데이터 구조와 알고리즘을 설계하여 탱크가 수신한 신호에 따라 탱크가 있는 위치를 추정해 주십시오.디자인 시 가능한 확장 상황을 고려하여 당신의 디자인 스타일을 구현하십시오.
    가령, 정찰병이 지휘부에 보낸 정보는 다음과 같다. 탱크 좌표: (11,39) 탱크의 운행 방향: W 탱크가 받은 신호는 MTMPRPMTMLMRMRMTPLMTLMRRMP이고 그 위치는 (9,43)이며 운동 방향은 E이다.

    좋은 웹페이지 즐겨찾기