Home > Enterprise >  Multiples of 10 in a list
Multiples of 10 in a list

Time:03-31

I am currently doing an assignment in my intro level CS class and just need a smidge of help.

They are asking me to write a program that reads a list of integers and determines if it has;

  • multiples of 10
  • no multiples of 10
  • mixed values.

It currently correctly outputs everything but mixed values. This is what I have:

n = int(input())

my_list =[]

for i in range(n):

    num = int(input())

    my_list.append(num)

def is_list_mult10(my_list): 
    mult10 = True
    for i in range(len(my_list)):
        if my_list[i] % 10 != 0:
            mult10 = False 
        return mult10

def is_list_no_mult10(my_list):
    no_mult10 = True
    for i in range(len(my_list)):
        if my_list[i] % 10 != 1:
            no_mult10 = False
        return no_mult10

if is_list_no_mult10(my_list) == True:
    print("no multiples of 10")
elif is_list_mult10(my_list) == True:
    print("all multiples of 10")
else:
    print("mixed values")

CodePudding user response:


def check_multiplier(my_list):
    is_10_multiplier = []
    for i in my_list:
        if i % 10 == 0:
            is_10_multiplier.append(True)
        else:
            is_10_multiplier.append(False)
    if sum(is_10_multiplier) == len(my_list):
        print("all multiples of 10")
    elif sum(is_10_multiplier) == 0:
        print("no multiples of 10")
    else: print("mixed values")


# tests
mixed = [1, 20, 34, -10]
check_multiplier(mixed)

no_10 = [13, 22, 101, -5]
check_multiplier(no_10)

only_10 = [20, 140, 30, -50]
check_multiplier(only_10)

Function check_multiplier indexing all elements from my_list and saves booleans into is_10_multiplier. Then checks the sum of is_10_multiplier, if all items are True then sum is equal length of passed list, if all are False then sum is 0.

CodePudding user response:

As mentioned in the comments, you have a couple of errors in your code (the return statements are inside the for loop).
Also, the logic seems a little too complicated :) No need to have 2 separate functions, you can try:

n = int(input('How many numbers?: '))

my_list =[]

for i in range(n):
    num = int(input(f'Insert element {i}: '))
    my_list.append(num)


def how_may_mult10(my_list):
    # counting how many multiples of 10 you have in your list
    number_of_m10 = 0
    for num in my_list:
        if num % 10 == 0:
            number_of_m10  = 1
    return number_of_m10


number_of_m10 = how_may_mult10(my_list)

if number_of_m10 == len(my_list):
    print('All multiples of 10')
elif number_of_m10 == 0:
    print('No multiples of 10')
else:
    print('Mixed values')

CodePudding user response:

I see you have done some logical as well as syntactic error, as mentioned in the comments also.

Below is your modified code :

n = int(input())

my_list =[]

for i in range(n):

    num = int(input())

    my_list.append(num)

def is_list_mult10(my_list): 
    mult10 = True
    for i in range(len(my_list)):
        if my_list[i] % 10 != 0:
            mult10 = False 
    return mult10 #changed here

def is_list_no_mult10(my_list):
    no_mult10 = True
    for i in range(len(my_list)):
        if my_list[i] % 10 == 0:  #changed here
            no_mult10 = False
    return no_mult10 #changed here

if is_list_no_mult10(my_list) == True:
    print("no multiples of 10")
elif is_list_mult10(my_list) == True:
    print("all multiples of 10")
else:
    print("mixed values")

It successfully prints the correct statement. However I'll suggest you to try to optimise e your program.

  • Related