私は誕生日のパラドックス計算するプログラムを作成しようとしています:return文は何をしますか?
import random
def random_birthdays():
count = 0
res = []
for i in range(23):
res.append(random.randint(0, 365))
res.sort()
return res
def final():
count = 0
i = 0
random_birthdays()
for day in res:
if res[i] == res[i + 1]:
count = count + 1
i = i + 1
else:
i = i + 1
return count
def percentage():
happens = 0
for i in range(100):
final()
happens = happens + count
percentage = happens/100
percentage()
しかし、私はこのエラーを取得しています:for day in res: res not defined
を。
私はPythonの復帰部分を理解している方法が本当に間違っていると思います。私はそれを見て、res
を返して、それを次の行の変数として使用する必要があるからです。
あなたは値ではなく、変数を返します。 'random_birthdays()'は '2 + 2'のように評価される式です。これは整数に評価される式です。結果で何かをする必要があります(変数に格納するなど)。 – Ryan
'return res'は、呼び出し側が使用できる' res'変数を持つことを意味しません。 'return'は変数ではなくオブジェクトを返します。呼び出し元が返されたオブジェクトを変数に保存したい場合は、呼び出し側がそれを行う必要があります。 – user2357112
変数resを割り当てたことはありません。関数は 'res'の値を返しますが、シンボルは保持しません。 'random_birthdays'関数を終了すると、シンボルは意味を持ちません。返された値を新しいシンボルに代入する必要があります( 'res'は再利用できます)。ループの前の行を 'res = random_birthdays()'に変更してください。 – Zinki