Программа работает не правильно
a = int(input())
if (a%2 == 0):
a = a // 2
print(a)
if (a%2 !=0):
print(a)
В теории код должен чётные числа делить на два, а не чётные оставлять как есть и выводить на экран. Но когда я ввожу, например, "6", он выводит "3" два раза, а должен один. Что я не так сделал?
Ответы (3 шт):
print(a // 2 if a%2 == 0 else a)
а вообще, старайтесь не делать запись и чтение одной переменной несколько раз в перемешку -- багов меньше будет.
Читайте комментарии
a = int(input()) # а равно 6
if (a%2 == 0): # 6%2 равно 0, заходим внутрь
a = a // 2 # а теперь равно 3!!!
print(a) # печатаем 3
if (a%2 !=0): # 3%2 не равно 0, заходим внутрь
print(a) # печатаем 3
Как исправить.
Так
a = int(input())
if (a % 2 == 0):
print(a // 2)
if (a % 2 != 0):
print(a)
Но лучше так
a = int(input())
if (a % 2 == 0):
print(a // 2)
else:
print(a)
PS. В следующий раз давайте вопросу заголовок, отражающий проблему. Тут в каждом вопросе программа работает неправильно.
Ваша проблема заключается в том, что в строке
a = a // 2
вашего кода вы переписываете содержание переменной a, и когда это новое содержание (а не оригинальное, как вы хотели) удовлетворяет тесту в следующей строке
if (a%2 != 0):
то это новое значение тоже выводиться. :-(
Но вы хотите или первую возможность, или вторую возможность. Значит, просто вместо if-if использовать if-else:
a = int(input())
if (a % 2 == 0):
a = a // 2
print(a)
else: # здесь разница
print(a)