我正在编写一个函数,该函数返回大于列表中某个值的数字的最小值。例如,如果给定值为 [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])
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用 while 循环运行代码,它不会执行该代码。如果我使用 for 循环运行代码,它会给出“TypeError: 'int' object is not iterable”
你的while循环将无限循环,除非每个数字都seq大于value(这就是正在发生的事情,因为i永远不会超过len(seq))
此外,递增i是对大于 value 的数字进行计数,而不是精确给出最小的较大值的索引。
您可以使用列表理解在一行中完成此操作:
min(i for i in [1,2,3,4,5] if i > 3)
Run Code Online (Sandbox Code Playgroud)
输出:
4
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5605 次 |
| 最近记录: |