Программа FizzBuzz никогда не удовлетворяет одному из условий

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

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

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.


person Ritwik Singh    schedule 04.07.2019    source источник


Ответы (4)


вам нужно изменить порядок вашего оператора if...elif...else

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

Если все условия равны False, выполняется тело else.

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)
person ncica    schedule 04.07.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
person Hosna Sadat azarmsa    schedule 04.07.2019

Альтернатива: [Принимает значение от пользователя. Надеюсь, поможет!]

num=int(input("Enter the value : "))

if(num % 5 == 0):
    if(num % 3 == 0):
        print("Zoom")
    else:
         print("Zap") 
elif(num % 3 == 0):
     print("Zip")
else:
     print("invalid")
person Amey Joshi    schedule 16.06.2021

Решение на Java

Реализуйте программу, которая отображает сообщение для заданного номера на основе следующих условий. Если число кратно 3, отобразите Zip. Если число кратно 5, отобразите Zap. Если число кратно 3 и 5, отобразите Масштаб. Во всех остальных случаях отобразите Недействительно.

class ZipZapZoom 
{
    public static void main(String[] args) 
    {
        // Implement your code here 
        int num = 10;
        if(num % 3==0 & num %5 == 0)
        {
            System.out.println("Zoom");
            
        }
        else if(num % 5 == 0)
        {
            System.out.println("Zap");
        }
        else if(num % 3==0)
        {
            System.out.println("Zip");
        }
        else
        {
            System.out.println("Invalid");
        }
    }
}
person Ashok Kumar    schedule 22.07.2021