파이썬 코드 질문 (반복문, if in ~ 관련)
조회수 957회
만약 숫자에 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 답변
-
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 도 마찬가지이구용.
댓글 입력