How to sum even and odd values with one for-loop and no if-condition?
for n in range(number):
x += (1 - n % 2) * n
y += (n % 2) * n
Purely for educational purposes (and a bit of fun), here is a solution that does not use any for
loops at all. (Granted, in the underlying logic of the functions, there are at least five loops.)
num = list(range(int(input('Enter number: '))))
even = num[::2]
odd = num[1::2]
print('Even list:', even)
print('Odd list:', odd)
print('Even:', sum(even))
print('Odd:', sum(odd))
Output:
Enter number: 10
Even list: [0, 2, 4, 6, 8]
Odd list: [1, 3, 5, 7, 9]
Even: 20
Odd: 25
How does it work?
- The
input()
function returns astr
object, which is converted into an integer using theint()
function. - The integer is wrapped in the
range()
andlist()
functions to convert the given number into a list of values within that range.- This is a convention you will use/see a lot through your Python career.
- List slicing is used to get every second element in the list. Given the list is based at zero, these will be even numbers.
- Slice the same list again, starting with the second element, and get every second element ... odd numbers.
- Link to a nice SO answer regarding slicing in Python.
- The simply use the
sum()
function to get the sums.