単一の説明では複雑すぎる場合は、何をしようとしているのかを分解するのに役立ちます。
- 正の整数を取り、
n
n
長さ
のリストを作成する
- そのリストの平均を返します。
一度にこれに取り組みましょう:
正の整数を取り、n
def randomNumbers(n):
if type(n)==int and n>0:
あなたが言っdef randomNumbers(n):
ていると言うとき
Hey, computer, this is a function called "randomNumbers",
and it's going to be called with a single thing in parentheses
and we're going to call that `n` from now on.
Here's what that function does:
n
しかし、それが 0 より大きい整数であることを保証していませんthing
。したがって、そうであることを確認する必要があります。これは、isの型とその値が正 (0 より大きい) でif type(n)==int and n>0:
あることを確認することによって行われます。n
int
n
それが最初の箇条書きです。次にn
、各要素が 0 ~ 9 の整数である長さのリストを作成します。これらはランダムにする必要があります[1]。
result=list()
for i in range(n):
result.append(random.randint(0,9))
これは見た目ほど複雑ではありません。呼び出す a を作成することから始めlist
ますresult
(または、何でも構いません)。for
ループはただ言っている:
Hey, computer, you're gonna do the same thing a number of times,
and that number is "until you've counted from 0 to n times".
And when you do that, "i" is going to represent where you are
in that "0 to n" range. Here's what you're gonna do all those times:
では、何回やりn
ますか?先ほど. append
_ _ _ result
それresult.append(random.randint(0,9))
がそうです。
次に、そのリストの平均を返します。リストの平均は、リストsum
内の数値をlen
gth で割ったものです。
return sum(result)/float(len(result))
sum
、または 、またはlen
好きなもののようなイテラブルを取り、合計、長さ、またはその他の要求を与えることができます。これらは、学ぶための優れたツールです。そうしてください。他の場所では、できれば率直に。list
set
さて、あなたが本当に注意を払っていれば、これまでのところ次のようになっていることがわかるでしょう:
import random # I added this secretly, sorry!
def randomNumbers(n):
if type(n)==int and n>0:
result=list()
for i in range(n):
result.append(random.randint(0,9))
return sum(result)/float(len(result))
これは素晴らしいです!それが必要です。試しprint(randomNumbers(5))
てみると、探しているものが正確に得られます。乱数の束の平均です。
しかし、試してみたらどうprint(randomNumbers('foo'))
ですか?あなたはおそらく を得ますNone
よね?if
それは、私たちが書いたステートメントに適合しなかったためです。正の整数ではないelse
ものでも愛されるように、ステートメントを作成する必要があります。
else:
return "That's no good. Try a positive integer instead"
ばかげていますが、うまくいきます。いつの日か、例外の発生とすべてのスムーズなジャズについて学ぶでしょうが、それまでは、ただ言うだけで結構です
Hey, computer, if n wasn't up to my stratospheric expectations,
then just spit back this message. I'll understand.
だから、一日の終わりにあなたが持っている
import random
def randomNumbers(n):
if type(n)==int and n>0:
result=list()
for i in range(n):
result.append(random.randint(0,9))
return sum(result)/float(len(result))
else:
return "That's no good. Try a positive integer instead"
このコードをより効率的にするためにできることがいくつかあります。興味を持たせるために、例を挙げます。
from random import randint
def randy(n:int):
return sum({randint(0,9) for i in range(n)})/n if n>0 else "Try again."
これは、リスト内包表記、セット、関数注釈、およびその他の心配する必要のないものに入ります。率直に言って、そのコード行は適切な「Pythonic」コードには複雑すぎるかもしれませんが、それは可能です。これは素晴らしいことです。
それを続けて、落胆しないでください。Python は、あなたが何を間違えたのかを説明する努力をします。デューデリジェンスを行った場合、コミュニティは一般的にかなり良いものです。最初に自分で答えを探すことなく助けを求めて、彼ら(/私たち)を虐待しないでください.
[1]技術的には疑似乱数ですが、真の乱数を生成するのは困難です。