简体   繁体   中英

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

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))

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.

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.

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!!!")

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM