코드를 살펴 보겠습니다.
In [1]: code = [str(i) for i in range(1,12)]
In [2]: len(code)
Out[2]: 11
In [3]: code2 = '12345678912'
In [4]: code2.isdigit()
Out[4]: True
다음 :
이
c = map(int,code)
이 목록에 code
변환
if len(code) != 11 or not code.isdigit():
return False
이 code
이 열한 자리의 목록, 또는 열한 자리 문자열이어야 있음을 알려줍니다 정수.
In [3]: code
Out[3]: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11']
In [4]: map(int,code)
Out[4]: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
In [5]: code2 = '12345678912'
In [6]: map(int,code2)
Out[6]: [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2]
w1
및 w2
숫자의 목록입니다.
s1 = sum(map(lambda x,y: x*y, c[:-1], w1))%11
이제 까다로운 문제가 발생했습니다.
slicing 구문 목록의 일부 사본을 반환
In [19]: c
Out[19]: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
In [20]: c[:-1]
Out[20]: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
map 함수 익명 함수를 적용한다. 이 경우 c[:-1]
및 w1
번 호가 곱합니다.
In [21]: map(lambda x,y: x*y, c[:-1], w1)
Out[21]: [1, 4, 9, 16, 25, 36, 49, 64, 81, 10]
sum 함수는 명백한 일을합니다.
s2 = (sum(map(lambda x,y: x*y, c[:-1], w2))%11)%10
마지막 줄 :
return s1 == c[-1] or s1 == 10 and s2 == c[-1]
In [23]: sum(map(lambda x,y: x*y, c[:-1], w1))%11
Out[23]: 9
In [24]: 295/11
Out[24]: 26
In [25]: 295-11*26
Out[25]: 9
이제 다음 이해할 수 있어야 :
In [22]: sum(map(lambda x,y: x*y, c[:-1], w1))
Out[22]: 295
%
OPERATOR 시스템은 나머지 부문을한다그것은 말한다; 이 c
의 마지막 요소와 같거나 s1
이 10이고 s2
이 c
의 마지막 요소 인 경우 True
을 반환하십시오. 그렇지 않으면 거짓을 반환합니다.
파스칼에서 어떻게 작동합니까? 파이썬 코드이기 때문에 전혀 아닙니다. 이 코드를 Pascal로 변환하거나이 코드의 기능을 설명하기 만하면됩니다. [나는 downvoter 아니지만이 질문은 연구 노력을 표시하지 않습니다] – TLama
닫힌 경우 귀하의 질문을 재 게시하지 마십시오. 대신 * 이전 질문을 편집 * 할 수 있습니다. 그것을 향상시키고 다시여십시오. –
나는 그것이 무엇을하는지 알지만, 어떤 작업과 fuctions가 파스칼로 이것을 할 필요가 있는지 알 수 없다. 이것은 내 프로그램의 네 번째 부분이지만, 나는 그것을 알아낼 수 없다.이 함수는 파스칼로 이것을 수행하는 데 필요하다. – BeginnerPascal