When I apply even, odd, and zero checking on a list of numbers, it works well, but for zero I get EVEN Number instead of Zero Number. Where is my mistake?
class COPY: def __init__(self, number): self.n = number def even_odd_zero(self): x = [] for i in self.n: if i % 2 == 0: x.append('EVEN Number') elif i % 2 != 0: x.append('ODD Number') else: x.append('Zero Number') return x nnn = COPY([1,2,3,4,5,6,7,8,9,0]) print(nnn.even_odd_zero()) The results:
[ 'ODD Number', 'EVEN Number', 'ODD Number', 'EVEN Number', 'ODD Number', 'EVEN Number', 'ODD Number', 'EVEN Number', 'ODD Number', 'EVEN Number' ] 14 Answers
0 is an even number. If you want special handling for that case, put it first in your if/elif/else chain
i % 2 is either 0, or not 0, so the else block will never be executed.
if i % 2 == 0: x.append('EVEN Number') elif i % 2 != 0: x.append('ODD Number') # Unreachable code below else: x.append('Zero Number') If you want something to be added to x when i is 0 you could do:
if i == 0: x.append('Zero Number') elif i % 2 == 0: x.append('EVEN Number') elif i % 2 != 0: x.append('ODD Number') 0your problem lies in the fact that 0 modulus 2, or 0 % 2 = 0. A working example would be
class COPY: def __init__(self, number): self.n = number def even_odd_zero(self): x=[] for i in self.n: # check if i is zero if i == 0: x.append("Zero Number") elif i % 2 == 0: x.append("Even Number") elif i% 2 != 0: x.append("Odd Number") return x numberList = COPY([0,1,2,3,4,5,6,7,8,9]) print(numberList.even_odd_zero()) Result:
['Zero Number', 'Odd Number', 'Even Number', 'Odd Number', 'Even Number', 'Odd Number', 'Even Number', 'Odd Number', 'Even Number', 'Odd Number'] 1The main thing in this is that the code is executed line by line so if you enter the
a = int(input("Enter the first Number :"))
if a == 0:
print(a, "Entered number is zero")
elif a % 2 == 0:
print(a, "is even number") elif a % 2 != 0:
print(a, "is zero") else:
print("Placed") a == 0 in if statement then its shows that it is zero.