2014-04-18 2 views
2
if A > B and C and D: 
    print("A wins") 
if B>A and C and D: 
    print("B wins") 

어떤 변수가 그룹에서 가장 큰 정수를 포함하고 있는지 확인하고 확인하는 방법은 무엇입니까? 누가 승자를 결정합니까?어떤 변수가 최대 값을 갖는지 확인하는 방법

+0

거기에 기본 코드가 있습니다. 어떤 이유로 든 정확하지 않은 답을 줄 수있는 모든 경우 –

답변

3

테스트 할 수 하나 각 :

if A > B and A > C and A > D: 

아니면 그냥 다른 세의 최대 값에 대해 테스트 할 수 :

if A > max(B, C, D): 

하지만 당신이 정말로 원하는 것을 표시는 그림이다 어떤 플레이어가 최대 값을 가졌는지 확인하십시오. 대신 사전에 플레이어의 점수를 저장해야합니다 :

players = {'A': A, 'B': B, 'C': C, 'D': D} 

이 지금은 훨씬 더 쉽게 누가이기 찾을 :이 값이 최대가되는 players의 키를 반환

winner = max(players, key=players.get) 
print(winner, 'wins') 

. 코드 전체에 별개의 변수가 아닌 players을 사용할 수 있습니다.

명시 적으로 말하면 : A > B and C and D은 작동하지 않습니다. 부울 논리는 그렇게 작동하지 않습니다. 각 표현식은 따로 테스트, 그래서 당신은 A > B이 충족되어야합니다 C 사실 D 진실해야해야 얻을. 파이썬에서 값은 빈 컨테이너가 아니고 숫자 0이 아닌 경우 true로 간주됩니다. 이것이 모두 정수 점수 인 경우 0과 같지 않으면 CD이 참입니다.

+0

을 테스트하도록 수정할 수 있습니다. 'D'가 가장 많은 점수를 얻었 으면 'B'가 승자가 되겠습니까? – user3548949

+0

@ user3548949 : 아마도 점수 문자열입니까? 당신은 우리에게 당신의 가치 샘플을 줄 수 있습니까? ''100 ''은 9로 시작하기 전에''90'보다 작을 것입니다. –

0

당신은 max() 사용할 수 있습니다

var_names = ['A', 'B', 'C', 'D'] 
max_var = max(zip(names, (map(eval, var_names))), key=lambda tuple: tuple[1])[0] 
print("%s wins!" % max_var) 

zipmap('A', A) 같은 튜플의 목록에 var_names 목록을 변환 : 물론

if A > max(B,C,D): 
    print("A wins") 
elif B > max(A,C,D): 
    print("B wins") 

이 할 수있는 기능 프로그래밍 방법이 , 가장 높은 두 번째 항목을 가진 튜플을 얻는다. 그 튜플로부터 변수 이름을 가져온다.

관련 문제