简体   繁体   English

列表中 10 的倍数

[英]Multiples of 10 in a list

I am currently doing an assignment in my intro level CS class and just need a smidge of help.我目前正在做入门级 CS class 的作业,只需要一点点帮助。

They are asking me to write a program that reads a list of integers and determines if it has;他们要我写一个程序来读取一个整数列表并确定它是否有;

  • multiples of 10 10的倍数
  • no multiples of 10没有 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")

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 . Function check_multiplier索引my_list中的所有元素并将布尔值保存到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.然后检查is_10_multiplier的总和,如果所有项目都是True则总和等于传递列表的长度,如果所有项目都是False则总和为 0。

As mentioned in the comments, you have a couple of errors in your code (the return statements are inside the for loop).如评论中所述,您的代码中有几个错误(返回语句在 for 循环内)。
Also, the logic seems a little too complicated:) No need to have 2 separate functions, you can try:另外,逻辑似乎有点太复杂了:)不需要有2个独立的功能,你可以试试:

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

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.但是,我建议您尝试优化您的程序。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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