if 조건문 질문 : if i == "몇 시야?" or "지금 몇 시야?" or "현재 시간 알려줘."

조회수 698회
import datetime
import sys
start_time = datetime.datetime.now()


def 비트박스():
    print("북치기박치기")


i = input("시리를 부르셨나요?[네/아니요]")
if i == "네":
    print("듣고 있어요....")
    input("입력하세요=>")
if i == "몇 시야?" or "지금 몇 시야?" or "현재 시간 알려줘." or "몇 시니?" or "지금 몇 시니?":
        print(start_time)

if i == "비트박스 해봐":
        print({비트박스})

elif i == "아니요":
    print("알겠습니다")
    sys.exit()

라는 코드를 작성했는데요. 저의 의도는 입력하세요 후에 "몇 시야?"와 "비트박스 해봐"를 각각 입력하면 실행되게 하고 싶었습니다. 그런데 계속 비트박스 해봐 라고 입력해도 시간만 출력되네요. 도움 주시면 감사하겠습니다.

  • indent 신경써 주시고 i 값이 각 스코프의 조건문 안에서 어떻게 되는지 print로 확인해보세요. 그리고 조건문의 조건에서 or 가 어떻게 연결되어야 하는지 문법을 확인해 보세요. 추가적으로 python의 truthy value에 대해서도 알아보시고요. doodoji 2020.5.21 14:41

1 답변

  • 우선 파이썬은 들여쓰기를 잘 지켜야 하는 언어입니다.

    작성하신 코드는 그러한 규칙을 잘 지키지 않아서 의도대로 동작하지 않을거예요.

    그러한 부분들을 잘 수정하셨다고 한다면, 그 이후에 해결해야 하는 가장 중요한 문제는 input("입력하세요=>")를 통해 입력받은 값을 저장하는 변수가 없다는 점입니다.

    위와 같이 작성하게 되면 ii = input("시리를 부르셨나요?[네/아니요]")에 입력하신 값만 저장하게 됩니다.

    그래서 비트박스에 대한 출력문이 실행되지 않는 것입니다.

    그런데 시간은 왜 출력이 되는가 하면

    if i == "몇 시야?" or "지금 몇 시야?" or "현재 시간 알려줘." or "몇 시니?" or "지금 몇 시니?":

    라는 조건문이 오류를 발생시키지 않을 뿐 잘못된 코드이기 때문입니다.

    조건문은 사람들이 직관적으로 생각하는 대로

    a == 1 or 2 or 3이라고 작성한다고 해서 a를 1, 2, 3 모두와 비교해 주는 것이 아닙니다.

    컴퓨터가 알아들을 수 있도록 하나하나 직접 비교해 주셔야 합니다.

    간단한 부분이니, 파이썬 문법을 제대로 공부하신 후에 다시 만들어 보시는 게 좋을 듯 싶습니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)