-3
def small(n):
    smallest=n
    for var in range(1,n+1):
        if (smallest > var):
            smallest = var
        else:
            smallest = n
print (small(5))     
4

2 に答える 2

1

コードに 2 つのエラーがあります。

1 つ目は、何も返さないコーディング エラーです。return smallestおそらく関数の最後に置きたいでしょう。

2 つ目は論理エラーです。あなたのブロックは、考慮された最新の数値が以前の最小値よりも小さくないときに、else誤って設定をsmallest戻します。n

これらを修正したとしても、1 と 1 の間の最小数は常に 1 になるため、関数はかなり無意味にnなります。ただし、コードを任意のシーケンスに簡単に一般化できます。

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 が言ったようminに、組み込み関数である を呼び出すのと同じです。彼と私のものは同じことをします。彼の例でイテレータについて少し学びます。これは、数値のリスト内の要素へのポインタです。


あなたの機能を実装するための2つのアイデアがあります...(最初:短い)

def small(n):
     s=n
     for v in range(1,n+1):
             s=s if s>v else n
     return s

この方法で実装できるため、有用性には疑問があります (2 番目: 実際の動作):

small=lambda x: x

ご覧のとおり、関数は実際には何も役に立ちません。または、その機能を実行し、セット [数値] の最小数値を返します。そこで何を達成しようとしているのかわからない。

于 2013-09-15T22:38:13.303 に答える