def small(n):
smallest=n
for var in range(1,n+1):
if (smallest > var):
smallest = var
else:
smallest = n
print (small(5))
答案 0 :(得分:1)
您的代码中有两个错误。
第一个是编码错误,您不返回任何内容。您可能希望将return smallest
放在函数的末尾。
第二个是逻辑错误。在您考虑的最新数字不小于之前的最小值时,else
数据块会错误地将smallest
设置回n
。
现在,即使你修复了这些函数,函数也会毫无意义,因为1和n
之间的最小数字总是为1.但是,你可以将代码推广到任意序列非常容易:
def small(seq):
it = iter(seq) # make an iterator
smallest = next(it) # initialize smallest to the first item
for val in it: # loop over the rest of the values
if val < smallest: # no else clause needed
smallest = val
return smallest # and don't foget to return a value at the end!
这也适用于非整数值,如字符串(按字典顺序排序)。但是,您应该只使用内置min
函数。
答案 1 :(得分:0)
接下来尝试:
def small(*n):
s=None
for m in n:
if s is None or m<s: s=m
return s
*n
是small
(asteriks)参数的“链接”。
它搜索n
中的最小数字,你可以称之为。
small(5,7,19,3,6)
它将返回3
,因为它是集合中的最小数字。
正如Blckknght所说的那样,就像调用内置函数min
一样。他和我的一样,你在他的例子中学到了一点iterators,这是一个指向数字列表中元素的指针。
我有两个想法来实现你的功能......(第一个:更短)
def small(n):
s=n
for v in range(1,n+1):
s=s if s>v else n
return s
有用性是有问题的,因为它可以通过这种方式实现(第二种:它真正起作用):
small=lambda x: x
正如您所看到的,您的功能实际上没有任何用处。或者它执行其功能,它返回最小数量的集合[数字]。不知道你想在那里实现什么。