파이썬 코드 질문 (반복문, if in ~ 관련)

조회수 678회

만약 숫자에 2 4 8 중 하나만 섞여있다면 Fizz를, 두 개가 섞여있다면 Buzz를, 셋 다 포함되지 않으면 숫자 그대로 출력하는 코드를 작성하려고 합니다.

아래는 작성해본 코드인데요 ,

def lessgo(start, end): for i in range(start, end+1): if "2" and "4" in str(i): print("Buzz")

    elif "2" and "8" in str(i):
        print("Buzz")

    elif "8" and "4" in str(i):
        print("Buzz")
    elif "2" in str(i) or "4" in str(i) or "8" in str(i):
        print("Fizz")
    else:
        print(i)

start, end = list(map(int, input().split()))

lessgo(start, end)

출력 결과는 다음과 같습니다.

1 Fizz 3 Buzz 5 6 7 Buzz 9 10 11 Fizz 13 Buzz 15 16 17 Buzz 19 Fizz Fizz Fizz Fizz Buzz Fizz Fizz Fizz Buzz Fizz 30

만약 같은 수가 두 개 있다면, (EX: 22) Buzz가 출력 되어야 하는데 Fizz가 출력되는 문제가 있습니다.

코드에서 어느 부분이 잘못됐는지 궁금합니다

1 답변

  • 좋아요

    1

    싫어요
    채택 취소하기

    if "2" and "4" in str(i):

    위 부분에서 "2" 는 항상 참입니다. "2" 와 "4" in str(i) 를 평가해서 그 결과를 and 하게 되므로 위 문장은 결과적으로 "2" 는 무시하고 "4" 포함 여부만 체크하게 될 것입니다.

    의도하신 바와 다르게 사용된 부분만 수정한다면..

    num = str(i)
    if "2" in num and "4" in num:
    

    이렇게 고쳐보시는 게 어떨까 싶습니다. 아래 elif 도 마찬가지이구용.

    • 답변감사합니다 Lessgo 2023.12.14 13:24

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

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

(ಠ_ಠ)
(ಠ‿ಠ)