def small(n):
smallest=n
for var in range(1,n+1):
if (smallest > var):
smallest = var
else:
smallest = n
print (small(5))
问问题
90 次
2 回答
1
您的代码中有两个错误。
第一个是编码错误,您不会返回任何内容。您可能希望将其放在return smallest
函数的末尾。
二是逻辑错误。您的else
块错误地设置smallest
回n
任何时候考虑的最新数字不小于先前的最小值。
现在,即使您修复了这些问题,该函数也将毫无意义,因为介于 1 和n
始终为 1 之间的最小数字将始终为 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
函数。
于 2013-09-15T22:52:23.753 回答
0
下次尝试:
一组数字中的最小数字
def small(*n):
s=None
for m in n:
if s is None or m<s: s=m
return s
这*n
是small
(在星号上)的论点的“链接”。
它搜索最小的数字n
,你可以称之为
small(5,7,19,3,6)
它将返回3
,因为它是集合中的最小数字。
正如 Blckknght 所说,它就像 call 一样min
,是一个内置函数。他和我的做法相同,您在他的示例中了解了一些关于迭代器的知识,即指向数字列表中元素的指针。
我有两个想法来实现你的功能......(第一:更短)
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
如您所见,您的函数实际上没有任何用处。或者它执行它的功能,它返回集合 [number] 中的最小数字。不知道你想在那里实现什么。
于 2013-09-15T22:38:13.303 回答