def small(n):
smallest=n
for var in range(1,n+1):
if (smallest > var):
smallest = var
else:
smallest = n
print (small(5))
2 に答える
コードに 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
ただし、代わりに組み込み関数を使用する必要があります。
次の試行:
一連の数の中で最小の数
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
ご覧のとおり、関数は実際には何も役に立ちません。または、その機能を実行し、セット [数値] の最小数値を返します。そこで何を達成しようとしているのかわからない。