私は、次のダイスロール機能では単純なミス行わ:私はリストやタプルとしてシーケンスを渡す必要があるが、私は、次のエラーメッセージの詳細に興味があったことを知っていますrandom.choice()には2つの引数がありますか?
import random
def rollDie():
return random.choice(1,2,3,4,5,6)
print(rollDie())
を。
Traceback (most recent call last):
File "Lecture 5.2 -- stochastic - die roll example.py", line 8, in <module>
print(rollDie())
File "Lecture 5.2 -- stochastic - die roll example.py", line 6, in rollDie
return random.choice(1,2,3,4,5,6)
TypeError: choice() takes 2 positional arguments but 7 were given
メッセージには、「choice()は2つの位置引数を取りますが、7つは指定されました」と表示されます。
しかし、ドキュメントは1つの引数(シーケンス)を示しています。 https://docs.python.org/3/library/random.html
第2引数(私の場合は7番目)は何ですか?これは種ですか(これは私が指定していないので、時計によって初期化されていますか)?
ありがとうございました。私はこれについてもっと考えなければならない。私はちょうど '自己'の特徴が目立っているクラスについて学んだ。これは同じ概念ですか?つまり、random.Randomはクラスであり、このクラス内の関数を選択するか、完全に混乱していますか?あるいは、どのようにして誰がどのように「自己」議論を使用するのでしょうか? – apotheosied
@apotheosied:あなたは混乱していない、それはまさにそれです。 'class Random(...):'は 'def choice(self、seq):'を定義しています。 'Random()。choice(some_sequence)'を使うと(クラスの*インスタンス*のために)、Pythonは自動的に 'self'引数を提供します(* binding *というプロセスを通して、[descriptor howto]深いダイビングに行く場合はhttps://docs.python.org/3/howto/descriptor.htmlを参照してください)。 –
素晴らしいです、ありがとう! – apotheosied