Программа FizzBuzz никогда не удовлетворяет одному из условий - PullRequest
0 голосов
/ 04 июля 2019

Напишите программу на Python, которая отображает следующее сообщение для данного числа:

Если оно кратно трем, отобразите «Zip». Если оно кратно пяти, отобразите «Zap».Если оно кратно трем и пяти, отобразите «Масштаб».Если он не удовлетворяет ни одному из указанных выше условий, выведите «Invalid».

def display(num):
    message="Zip, Zap, Zoom"

    if(num%3==0):
      print("Zip")
    elif(num%5==0):
      print("Zap")
    elif((num%3==0) and (num%5==0)):
      print("Zoom")
    else:
      print("Invalid Number")
    return message


message=display(15)
print(message)

Я ожидаю, что на выходе 15 будет Zoom, но на самом деле будет Zip.

Ответы [ 2 ]

2 голосов
/ 04 июля 2019

вам нужно переупорядочить оператор if ... elif ... else

Если условие if равно False, оно проверяет условие следующего блока elif и т. Д., Но если один из операторовистинное тело этого оператора выполняется и завершается.

Если все условия имеют значение False, тело другого выполняется.

def display(num):

    if((num%3==0) and (num%5==0)):
        message = "Zoom"
    elif(num%3==0):
        message = "Zip"
    elif(num%5==0):
        message = "Zap"
    else:
      print("Invalid Number")
    return message


message=display(3)
print(message)
1 голос
/ 04 июля 2019

это потому, что 15 кратно 3 и удовлетворяет первому условию, поэтому на выходе получается «Zip».Вы можете исправить это просто следующим образом:

if(num%3==0 and num%5!=0):
  print("Zip")
elif(num%5==0 and num%3!=0):
  print("Zap")
elif((num%3==0) and (num%5==0)):
  print("Zoom")
else:
  print("Invalid Number")
return message
...