20181214hw
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
팁:
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이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.