Написать программу, которая определяет, является ли пользовательский ввод четным или нечетным, и выполняет циклы

Я пытаюсь сделать программу, которая будет постоянно принимать пользовательский ввод и определять, является ли пользовательский ввод четным или нечетным. Программа остановится только при вводе нуля.

Однако, когда я ввожу ноль, это prints 0 is an even number с последующим All done!, Ожидаемый результат просто All done!, Вот мой код:

def main():
    total = 0
    count = 0

    while True:
        entry=int(input('Enter a number or 0 to quit:'))
        if entry % 2 == 0:
            print (format (entry), 'is an even number.')
        else:
            print (format (entry),'is an odd number.')

        if entry == 0:
            print ('All done!')
            break
main()

5 ответов

Решение

Если вы хотите проверить, равен ли вход нулю, прежде чем делать что-либо еще, сделайте это. Если вы хотите остановить цикл в определенных условиях, установите break внутри условно. Обратите внимание, что count а также total были не использованы. Также, format() без форматирования является избыточным.

def main():

    while True:
        entry = int(input('Enter a number or 0 to quit:'))    
        if entry == 0:
            print('All done!')
            break
        if entry % 2 == 0:
            print(entry, 'is an even number.')
        else:
            print(entry, 'is an odd number.')

main()

Почему бы не попробовать что-то подобное

if entry == 0:   
     print ('All done!')
     break 
else  if entry % 2 == 0:
     print (format (entry), 'is an even number.')
else:
     print (format (entry),'is an odd number.')

Извините за неправильный отступ. Я не очень знаком с питоном. Зачем заставлять его выполнять дополнительную работу, если все, что ему нужно сделать при встрече с 0, это закончить

Проблема здесь в том, что когда Python читает ваш код, он читает его сверху вниз. Когда он достигает if entry % 2 == 0: первым и выведет все что там есть. Затем он продолжает if entry == 0 и выводит все, что там снова.

Вы хотите, чтобы он шел только в один блок кода и выполнял его. Вы также хотели бы, чтобы это расставило приоритеты entry == 0так что вы бы переместили это наверх. В этом случае, elif это команда, которую вы ищете.

def main():
    total = 0
    count = 0

    while True:
        entry=int(input('Enter a number or 0 to quit:'))
        if entry == 0:
            print ('All done!')
            break
        elif entry % 2 == 0:
            print (format (entry), 'is an even number.')
        else:
            print (format (entry),'is an odd number.')
main()

Вы должны проверить на 0 до entry%2==0 условие, ince 0%2==0, это не прерывает цикл.

Во-вторых использовать raw_input вместо ввода.

def main():
    total = 0
    count = 0

    while True:
        entry=int(raw_input('Enter a number or 0 to quit:'))

        if entry == 0:
            print ('All done!')
            break



        if entry % 2 == 0:
            print (format (entry), 'is an even number.')
        else:
            print (format (entry),'is an odd number.')

main()
      Question - Write a program to print whether a number is even or odd, also take input.

      Scanner input = new Scanner(System.in);
         System.out.println("Type your number");
         int EvenOdd = input.nextInt();

         if(EvenOdd %2 == 0){
             System.out.println("It is even number");
         }else {
             System.out.println("It is odd");
         }
Другие вопросы по тегам