Python 如何使用条件if语句正确地编写for循环?

Python 如何使用条件if语句正确地编写for循环?,python,Python,我正在尝试创建一个for循环,它获取一个数字列表和一个所需的数字,并从列表中输出一个倍数列表。我已使用以下代码完成此操作: def multiples(list_of_num, desired): for i in (list_of_num): if i%desired== 0: print(i, end='') 上面的代码可以工作,但我也希望防止用户输入 multiples([], 0) 如果在\u num的列表\u中没有多个

我正在尝试创建一个for循环,它获取一个数字列表和一个所需的数字,并从列表中输出一个倍数列表。我已使用以下代码完成此操作:

    def multiples(list_of_num, desired):
        for i in (list_of_num):
        if i%desired== 0:
            print(i, end='')
上面的代码可以工作,但我也希望防止用户输入

multiples([], 0)
如果在\u num的列表\u中没有多个,我还想输出“[]”

当我写条件语句时,程序会输出不需要的值。这是我所有的东西,以及一个不想要的输出样本

    def multiples(list_of_num, desired):
        for i in (list_of_num):
            if i%desired == 0:
                print(i, end='')
            if i%desired== 1:
                print("[]")
            if list_of_num == [] or desired == 0:
                print("No numbers provided")
输出:

multiples([1,2,3,4,5,6,7,8,9,10], 2)
[]
2[]
4[]
6[]
8[]
10
期望输出:

multiples([1,2,3,4,5,6,7,8,9,10], 2)
2
4
6
8
10
甚至更好

multiples([1,2,3,4,5,6,7,8,9,10], 2)
[2, 4, 6, 8, 10]

检查[]或0是否作为循环前的参数传递。如果不是,则执行循环:

def multiples(list_of_num, desired):
    if list_of_num == [] or desired == 0:
        print("No numbers provided")
    else:
        for i in (list_of_num):
            if i%desired == 0:
                print(i, end='')
输出:

[2,4,6,8,10]

输出:

没有提供数字

[]

没有列表理解:

def multiples(list_of_num,desired):
    final = []
    if list_of_num == [] or desired == 0:
        print("No numbers provided")
        return []
    for i in list_of_num:
        if i % desired == 0:
            final.append(i)
    return final

使用
numpy

将numpy导入为np
def倍数(所需数量的列表):
如果列表\u of_num==[]或所需==0:
返回“未提供号码”
其他:
list\u of_num=np.array(list\u of_num)
返回\u num的列表[list\u of \u num%desired==0]
打印(倍数([1,2,3,4,5,6,7,8,9,10],2))
#产出:[2 4 6 8 10]
打印(倍数([1,2,3,4,5,6,7,8,9,10],23))
#产出:[]
您的结果没有错 如果我能很好地理解你的问题,那么这样做应该更好:

def multiples(list_of_num, desired):
    multiple_list=[] 
    if len(list_of_num) ==0 or desired==0:
        print("No numbers provided")
    else:
        for i in (list_of_num):
            if i%desired == 0:
                multiple_list.append(i)
        print(multiple_list) 
倍数的结果([1,2,3,4,5,6,7,8,9,10],2): [2,4,6,8,10]

倍数的结果([1,3,5,7,9],2):
[]

请包括预期输出,而不仅仅是实际(不正确)输出。另外,如果输出应该是一个列表,为什么要使用
print
而不是制作一个列表?尝试在每次迭代时添加数字(倍数)而不是打印它们。通过这种方式,可以很容易地查看列表是否为空/或是否有数字,并在末尾打印。
如果不是list_of_num且不需要,则返回[];否则:…
是否有办法将下面的行
return[I for I in list_of_num,if I%desired==0]
进一步分解为更多但更简单的行?例如,我可以将
I for I
提取到与if表达式分离的for循环行中吗?当然可以,这是一个列表理解,但其作用与检查列表中的值并在满足窗帘条件时附加到新列表,然后返回新列表完全相同list@xhobo6看一看,我添加了一个没有列表的部分
def multiples(list_of_num,desired):
    final = []
    if list_of_num == [] or desired == 0:
        print("No numbers provided")
        return []
    for i in list_of_num:
        if i % desired == 0:
            final.append(i)
    return final
def multiples(list_of_num, desired):
    multiple_list=[] 
    if len(list_of_num) ==0 or desired==0:
        print("No numbers provided")
    else:
        for i in (list_of_num):
            if i%desired == 0:
                multiple_list.append(i)
        print(multiple_list)