2014-02-25 5 views
1

누군가이 코드를 간단히 설명 할 수 있습니까?누군가이 코드를 설명해 주시겠습니까?

prompts = ("Enter Strength Attribute, between 1 and 50: ", "Enter Skill Attribute, between 1 and 50: ") # I already now this so no need to explain it 

answers = [int(input(p)) for p in prompts] 
if not all(0 < a <=50 for a in answers): 
    # other code here 

발전기입니까?

그리고 어떻게 작동합니까?

미리 답변 해 주셔서 감사합니다.

+0

그것은 하나의 목록 이해와 하나의 생성자입니다. –

답변

5

당신은 목록 이해력과 생성자 표현이 있습니다.

[int(input(p)) for p in prompts] 

및 숫자 값의 일련의 사용자를 묻는 메시지 목록에서 정수의 목록을 생성합니다

목록의 이해입니다.

answers = [] 
for p in prompts: 
    result = int(input(p)) 
    answers.append(result) 

다음이다 :

그것은 또한 다음과 같이 표현 될 수

발전기 표현
(0 < a <=50 for a in answers) 

. 각 숫자가 0 (제외)과 50 (포함) 사이의 값인지 테스트합니다.

한번에 발전기 발현 한 결과 위에 all() function 뜻 루프, 그 결과 False 순간 하나의 반환은 발전기 결과를 소모하고 더 False 값이 발견 될 때 False 또는 True이다.

당신은 함께 if all(...) 시험을 대체 할 수있는 :

result = True 
for a in answers: 
    if not 0 < a <= 50: 
     result = False 
     break 

if result: 

이 같은 효과를 얻을 것을; answers을 순차적으로 반복하지만 테스트 중 하나가 False (0보다 크고 50보다 작지 않음) 인 경우 일찍 반복을 중지합니다.

1
answers = [int(input(p)) for p in prompts] 

이것은 목록입니다.

answers = [] 
for p in prompts: 
    resp = int(input(p)) 
    answers.append(resp) 

if not all(0 < a <=50 for a in answers): 

이 당신은 같은 것을 all (A는 모든 요소에 해당하는 여부를 반환 기능 내장)에 싸여 발전기, 쓸 수있다 : 그것은이 같은 for 루프로 기록 될 수있다 함수 :

def all(answers): 
    for a in answer: 
     if not 0 < a <= 50: 
      return False # note this short-circuits, stopping the loop 
    return True 
1

목록 이해입니다.

첫번째 라인과 동일하지 : 정확히

answers=[] 
for p in prompts: 
    a=int(input(p)) 
    answers.append(a) 

는 IF 조건 뒤에 두 번째 행의 부분 않는 같 :

for a in answers: 
     if a <= 0 or a > 50: 
       return False 
return True 
1
for p in prompts 

가 지시를 열거

int(input(p)) 

프롬프트로 p를 사용하여 입력을위한 사용자는 다음

(0 < a <=50 for a in answers) 
(이것은 이해 목록)를 int

answers = [...] 

하게 답변으로의 int로 변환 모든 입력의 목록을 입력을 강요하려고

이것은 생성기입니다. 이 응답의 각 값에 대한 테스트 0 < a <=50를 함유하는 반복 가능한이

if not all(...) 

테스트에게 발전기의 모든 요소를 ​​나열 만든다. 어떤 사람이 거짓이라면, other code

관련 문제