정연어
정연어

Reputation: 13

How do I sum numbers from user input in python?(only if they are even numbers)

I am new to programming, and I'm trying to make a code to get six numbers from a user and sum only even numbers but it keeps error like, "unsupported operand type(s) for %: 'list' and 'int' How can I do with it?

Also, I want to make like this,

Enter a value: 1
Is it even number?:no
Enter a value: 2
Is it even number?:yes
Enter a value: 3
Is it even number?:no
Enter a value: 6
Is it even number?:yes

but it keeps like this,

Enter a value: 1
Enter a value: 2
Enter a value: 3
Enter a value: 4
Enter a value: 5
Is it even number?: 
Is it even number?: 
Is it even number?: 
Is it even number?: 
Is it even number?:

How can I fix this? anyone who can fix this problem please let me know

Python 3.7

numbers = [int(input('Enter a value: ')) for i in range(6)]
question = [input('Is it even number?: ') for i in range(6)]

list1 = [] #evens
list2 = [] #odds

if numbers % 2 ==0:
    list1.append
else:
    list2.append

sum = sum(list1)
print(sum)

And I'd appreciate it if you could let me know if you knew the better code

Upvotes: 1

Views: 2016

Answers (4)

soumya-kole
soumya-kole

Reputation: 1365

If you want to show running sum. You can do something like :

import sys

sum_so_far = 0

while True:
    raw_input = input('Enter an integer: ')
    try:
        input_int = int(raw_input)
        if input_int == 0:
            sys.exit(0)
        elif input_int % 2 == 0:
            sum_so_far = sum_so_far + input_int
            print("Sum of Even integers is {}. Enter another integer er or 0 to exit".format(sum_so_far))
        else:
            print("You entered an Odd integer. Enter another integer or 0 to exit")
    except ValueError:
        print("You entered wrong value. Enter an integer or 0 to exit!!!")

Upvotes: 0

PApostol
PApostol

Reputation: 2292

This should do it. Note that there is no real need to ask the user if the number is even, but if you do want to ask, you can just add question = input('Is it even number?: ').lower() in the loop and then do if question=='yes'. Moreover, note that you cannot perform % on a list; it has to be on a single number.

evens = []
odds = []

for i in range(6):
  number = int(input('Enter a value: '))
  if number%2==0:
    evens.append(number)
  else:
    odds.append(number)

print(sum(evens))

Upvotes: 2

Prune
Prune

Reputation: 77837

Your if condition makes no sense:

if numbers % 2 == 0:

What is the value of [1, 2, 3, 6] % 2? There is no such thing as "a list, modulo 2". Modulus is defined between two scalar numbers.

Instead, you have to consider each integer in turn. This is not an operation you get to vectorize; that is a capability of NumPy, once you get that far.

for i in range(6):
    num = int(input('Enter a value: '))
    # From here, handle the *one* number before you loop back for the next.

Upvotes: 0

anon-bee-01
anon-bee-01

Reputation: 68

you are running the first two input statements in for loops and print at the same time. You can just take inputs first 6 times and store them in a list. After that you can check each input and store in even and odd lists while printing if its even or odd. and print the sum at last.

Upvotes: 0

Related Questions