首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >列表中10的倍数

列表中10的倍数
EN

Stack Overflow用户
提问于 2022-03-31 06:05:02
回答 3查看 2.5K关注 0票数 2

我目前正在做一个任务,在我的入门级CS类,只是需要一点帮助。

他们要求我编写一个程序,读取整数列表并确定是否有;

  • 倍数为10
  • 不为10
  • 混合值的倍数。

它目前正确地输出除混合值以外的所有内容。这就是我所拥有的:

代码语言:javascript
复制
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")
EN

回答 3

Stack Overflow用户

发布于 2022-03-31 06:29:06

代码语言:javascript
复制
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)

函数check_multiplier索引my_list中的所有元素,并将布尔值保存到is_10_multiplier中。然后检查is_10_multiplier的和,如果所有项都是True,则和等于传递列表的长度,如果都是False,则和为0。

票数 2
EN

Stack Overflow用户

发布于 2022-03-31 06:30:10

正如注释中提到的,您的代码中有几个错误(返回语句在for循环中)。

此外,逻辑似乎有点过于复杂:)不需要有两个单独的函数,您可以尝试:

代码语言:javascript
复制
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')
票数 0
EN

Stack Overflow用户

发布于 2022-03-31 06:35:14

我看到您做了一些逻辑和语法错误,在评论中也提到了这一点。

下面是您修改的代码:

代码语言:javascript
复制
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")

它成功地打印出正确的语句。不过,我建议你尽量优化你的程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71687590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档