【发布时间】:2019-08-27 13:58:03
【问题描述】:
我正在编写一个函数,它返回大于列表中某个值的数字的最小值。例如,如果给定值是 [1,2,3,4,5] 中的 3,它应该返回 4。但是,我的尝试都没有奏效。
我使用了'min'函数,并尝试了while和for循环来解决问题。
def smallest_greater(seq, value):
i = 0
while i < len(seq):
if seq[i] > value:
i = i + 1
return min(seq[i])
def smallest_greater(seq, value):
i = 0
for value in seq:
if seq[i] > value:
i = i + 1
return min(seq[i])
如果我尝试使用 while 循环运行代码,它不会执行代码。如果我使用 for 循环运行代码,它会给出“TypeError:'int' object is not iterable”
【问题讨论】:
-
seq[i]是单个值,因此min(seq[i])没有意义(并且失败)。 -
在第一个中,你有一个无限循环,因为你不会每次都增加 i。