함수를 작성하십시오. make_monitored은 입력으로 함수 f를 취하고 하나는 그 입력을 취합니다. make_monitors가 반환하는 결과는 내부 카운터를 유지 관리하여 호출 된 횟수를 추적하는 세 번째 함수, 예를 들어 mf입니다.다른 함수를 모니터하고 계산하는 함수 Python
mf에 대한 입력이 "how-many-calls?"와 같은 특수 문자열 인 경우 mf는 카운터의 값을 반환합니다.
입력이 특수 문자열 "reset-count"인 경우 mf는 카운터를 0으로 재설정합니다. 다른 입력의 경우 mf는 해당 입력에서 f를 호출 한 결과를 반환하고 은 카운터를 증가시킵니다. 내가 내부 카운터로 만들 수있는 하나 개의 요소 목록을 만들고 싶어 여기
def make_monitored(f):
a=[0]
def mf(x):
if x=="how-many-calls?":
return a[0]
elif x=="reset-count":
a=[0]
else:
a[0]+=1
return f(x)
return mf
def double(x): #NOT TO BE CHANGED , provided by question
return 2 * x
d = make_monitored(double) #NOT TO BE CHANGED, provided by question
내가 이해 해달라고 것입니다. 나는 그들이 make_monitors가 부모 함수이고 정의 된 것을 정의하지 않은 이유를 알지 못한다.
이것은 비슷한 방법을 사용했지만 성공한 이전에 완료 한 또 다른 질문입니다.
누적 기는 하나의 숫자 인수 을 반복적으로 호출하여 해당 인수를 합계에 누적하는 함수입니다. 호출 할 때마다 현재 누적 합계 을 반환합니다. accumulators를 생성하는 make_accumulator 함수를 작성하십시오. 각 함수는 독립적 인 합계를 유지합니다.
def make_accumulator():
lst=[0]
def add(x):
lst[0]+=x
return lst[0]
return add
A=make_accumulator()
샘플 실행 :
A = make_accumulator()
A (10) 출력 : 10
A (10) 출력 : 20
I 이유 얻을 해달라고 lst [0]은 여기에 정의되어 있습니다. 유일하게 가능한 이유는 make_accumulator 매개 변수없이에 걸리지 만 할당 a = [0]
는 mf
에 로컬 새로운 a
을 생성 1.
덕분에, 그것을 파이썬 3.6을 사용하여 – Silver