if-else-elif를 활용해 프로그램을 짜고있는데 잘 모르는부분이있습니다.
조회수 1342회
elif를 활용해 주차 계산 프로그램을 짜고있는데
주차시간 | 주차료 | 비고 |
---|---|---|
15분 이내 | 무료 | 15분주차료무료 |
15분 초과 | 3,000 | 20분 3000원 |
30분 초과 | 15분마다 천원추가 | 47분 4000원 |
이렇게 프로그램을 짜서
몇분 주차하셨습니다 얼마 내셔야합니다
뜨게 하려면 어떻게 프로그래밍을 해야하나요??!
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
# 만드신 소스를 대충 따라해 보았습니다. # int(input()) 은 생략합니다. # 15년이나 15분이나 같은 15라서 헷갈리신다면... 27일로 바꿔 드리겠습니다. # 이래도 헷갈리신다면 그건 좀 곤란하네요. minutes = 38880 # minutes 는 30보다 (많이) 큽니다. # 아래 코드를 보면 왠지 "extra charge" 가 나와야 할 거 같죠. if minutes < 15 : print("FREE OF CHARGE") elif minutes > 15 : print("$20") elif minutes > 30 : print("extra charge") # 과연 그럴까요? # 저기 오른쪽 아래 구석 실행하기 버튼 눌러서 실행해 보세요. ↘
부등식으로 구간 가르는 것까지는 성공하셨는데... 주신 코드대로라면 15분 이상 주차하기만 하면 15분을 주차하든 15년을 주차하든 요금은 항상 3천원일 겁니다.
일반적으로,
else if
는, 자기 앞의(else) if
조건들이 다 실패를 했는데 자기 조건이 성공을 하면, 자기 블록 코드를 실행한 다음, 자기가 속한 전체 조건문을 탈출하게 되어 있습니다. (자기 조건도 실패를 하면 그 다음 조건으로 넘기고요.) 그러니까 예컨대 15년(=7889238
분)을 주차했다면주차시간 < 15
는거짓
이지만주차시간 > 15
는참
이라서 3000원 내라는 말이 나가고 끝나 버립니다. 와! 개이득몇 가지 힌트만 더 드리고 제 턴을 마치겠습니다.
- 부등호 기호는 배우셨을 겁니다.
주차시간 > 15
라는 조건과주차시간 < 15
라는 조건은,주차시간 == 15
일 경우 모두 실패하는 조건입니다. 이건 이해 되시죠? - 반올림, 올림, 버림이 뭔지는 아실 겁니다. 자연수만 생각해 보면,
1
부터15
까지는15
로 나눗셈하고 소수점을 올림했을 때1
이 나옵니다.16
부터30
까지는15
로 나누고 올림했을 때2
가 나오고요.- 이 얘기를 왜 꺼내는지 감이 오지 않으신다면... 그냥 남들이 만들어 놓은 주차요금 계산 프로그램을 컨닝해 보세요.
- 답글 달아주셔서 감사합니다 . 지금 계속 해보고있는데 아직 정확히 어느부분이 잘못되었는지 감이 오지가 않습니다. 그 혹시 말하시는 15년과 15분은 같은 15분여서 3000원을 내셔야합니다 라고 출력이되는건가요? 그런데 막상해보니 그렇지가 않던데.. 제가 어느부분을 잘못이해하고있는지 모르겠습니다. 그리고 반올림이 정확이 무엇을 의미하는지도 잘모르겠습니다. 알 수 없는 사용자 2020.4.17 06:24
- 같은 15 여서 알 수 없는 사용자 2020.4.17 06:26
- 답글수정했습니다. 코드 실행하기도 한번 해보시고, 링크도 눌러보세요. 엽토군 2020.4.17 12:11
- 부등호 기호는 배우셨을 겁니다.
댓글 입력