이 퀴즈에 대한 내 솔루션은 다음과 같습니다!
points = 174 if points <= 50: result = "Congratulations! You won a wooden rabbit!" elif points <= 150: result = "Oh dear, no prize this time." elif points <= 180: result = "Congratulations! You won a wafer-thin mint!" else: result = "Congratulations! You won a penguin!" print(result)
산출:
Congratulations! You won a wafer-thin mint!
상한이 포함된다고 명시되어 있기 때문에 연산자 <=
대신 사용 <
합니다. 각 조건에서 가 상한보다 작거나 같은지 points
확인하여 가 경품 브래킷에 있는지 확인합니다 points
. 하한보다 큰지 확인할 필요가 없었습니다. 왜 이런 일이 일어나는지 봅시다.
- 때
points = 174
, 최초로 확인하는 경우points <= 50
, 평가하여 False로. 문제에서points
항상 200까지의 양의 정수 가 되도록 명시되어 있기 때문에 0보다 큰지 확인할 필요가 없습니다 . - 첫 번째 조건이 False로 평가되므로 다음 조건을 확인하기 위해 이동합니다
points <= 150
. 여기서도 50보다 큰지 확인할 필요가 없습니다! 이 지점에 도달하려면 첫 번째 조건이 False로 평가되어야 하기 때문에 이것이 사실임을 이미 알고 있습니다. 우리points <= 50
가 False 를 알고 있다면points > 50
True여야 합니다! - 마지막으로
points <= 180
true로 평가되는 if를 확인합니다 . 이제 그것이points
151 – 180 대괄호에 있다는 것을 압니다 . else
이전 조건을 확인한 후 상금의 다른 가능한 가치가 없기 때문에 마지막 경품 브래킷인 181-200이 절에 갇히게 됩니다 .
댓글을 달려면 로그인해야 합니다.