Python 如何使用条件if语句正确地编写for循环?
我正在尝试创建一个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中没有多个
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)