Написать программу, которая определяет, является ли пользовательский ввод четным или нечетным, и выполняет циклы
Я пытаюсь сделать программу, которая будет постоянно принимать пользовательский ввод и определять, является ли пользовательский ввод четным или нечетным. Программа остановится только при вводе нуля.
Однако, когда я ввожу ноль, это print
s 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");
}