Программа не печатает правильный вывод в определенных случаях - PullRequest
1 голос
/ 01 ноября 2019

вот мой код:

def bizzBuzzAnalysis(n):
    n = int(input())
    bizz = 0
    buzz = 0
    if(n%7==0):
        print(n, "is divisible by 7. Add a bizz!")
        bizz+=1

    if(n%9==0):
        print(n, "is divisible by 9. Add a buzz!")
        buzz+=1

    r = str(n)
    for i in range(len(r)):
        if r[i] == "7":
            print("Digit is 7, add a bizz!")
            bizz+=1
        if r[i] == "9":
            print("Digit is 9, add a buzz!")
            buzz+=1
    if(bizz==0 & buzz == 0):
        print(r)
    else:
        print(("Bizz! " * bizz) + ("Buzz! " *buzz))


# input and function test
n = 0
bizzBuzzAnalysis(n)

При вводе 99 программа по-прежнему будет печатать, что число делится на число 9, и содержит число 9. Однако вместо него будет печататься только число. фразы, которые он должен печатать. Похоже, так обстоит дело с большинством чисел, которые содержат 9. Что-то не так с моими утверждениями if?

1 Ответ

3 голосов
/ 02 ноября 2019

& не является логическим and оператором. Ваше выражение анализируется как

if bizz == (0 & buzz) == 0:

, что эквивалентно

if bizz == 0 == 0:

, поэтому фактическое значение buzz не имеет значения. При n == 99 значение bizz действительно равно 0, поэтому печатается только само число.

Не используйте &, когда имеете в виду and:

if bizz == 0 and buzz == 0:
...