14.7 심사문제
, Kang Minju님이 작성1.
R, E, M, S = map(int, input().split())2.
m = (R + E + M + S)/4
if R or E or M or S < 0 or R or E or M or S > 100 :
print('잘못된 점수')
else :
if m >= 80 :
print('합격')
else :
print('불합격')
R, E, M, S = map(int, input().split())1번 문제는 파이참에서 실행 시 잘 돌아가는데 퀴즈 상에서는 틀렸다고 합니다. 이렇게 써도 맞는지 문의드립니다.
m = (R + E + M + S)/4
if (R or E or M or S) < 0 or (R or E or M or S) > 100 :
print('잘못된 점수')
else :
if m >= 80 :
print('합격')
else :
print('불합격')
2번 문제는 왜 괄호를 쓰면 제대로 실행이 안되는지 문의드립니다.
Re: 14.7 심사문제
, 도장_ 관리자님이 작성1번은 문제에 제시된 첫 번째 테스트 케이스
89 72 93 82
에 대해서 합격이 아니라
잘못된 점수를 출력합니다.
>>> R, E, M, S = map(int, input().split())
89 72 -93 82
입력을 받았고 -93이 있으니 잘못된 점수를 출력해야 하지만
>>> (R or E or M or S)
89
or는 논리 연산자인데 논리 연산할 게 없습니다. R 첫 번째 값 89만 출력하는 결과가 됩니다. 뒤는 무슨 숫자가 와도 상관 없습니다.
>>> 10 or 20
10
10 or 20을 해도 첫 번째 10 출력
>>> 100 or 20
100
>>> (R or E or M or S) < 0
False
>>> (R or E or M or S) > 100
False
두 개의 조건부를 넣어도 False
>>> (R or E or M or S) < 0 or (R or E or M or S) > 100
False
>>>
False or False이니 결과도 False이고
이는 '잘못된 점수'는 출력할 일이 없다는 뜻입니다.
다음 테스트를 살펴보고
>>> R = 89
>>> R >= 0
True
>>> R <= 100
True
>>> R >= 0 and R <= 100
True
>>> 0 <= R <= 100
True
>>>
이 단계부터 조건식을 올바르게 작성해야 합니다.