【发布时间】:2021-02-09 20:59:49
【问题描述】:
我需要编写一个函数,该函数将采用 int 或 float 类型的列表。如果有嵌套列表,函数必须返回“No”,如果只有 float 或 int 类型,函数必须返回“Yes”。 这是我的代码
def take_list(lst):
for i in lst:
if isinstance(i, list) is True:
return "No"
elif isinstance(i, int) or isinstance(i, float):
return "Yes"
print(take_list([1, 2, [3, 2]]))
print(take_list([1, 2, 3, 2]))
但这里的答案总是“是”。 我尝试了“type”而不是“isinstance”,所以它不起作用
【问题讨论】:
-
将
print(i)放在for i in lst:下。你得到了多少打印输出? -
是的。如果你没有得到更多的打印输出,那是什么意思? (想想你在哪里
returning)。 -
在循环的第一次迭代中,您总是
returning。代码在该循环中可以采用的每条路径都将以return "No"或return "Yes"结尾,并且一旦您return,您就会退出该函数。在检查整个列表之前返回"Yes"有意义吗? -
@Ruslan 你知道你的列表中有更多的元素,但有些东西导致它在第一个元素之后结束。函数的哪一部分可以结束循环?
-
我不会这么说的。
for i in lst:很好。我会设置它,以便您在找到错误元素后立即在循环中返回“否”,然后在循环之后返回“是”。如果你通过整个循环而不返回,那么你知道所有元素都是好的,因为如果有一个坏元素你会更早返回。
标签: python-3.x list function types integer