3

このコード ブロックは、"cat"、"dog"、"hamster"、および"unicorn" を返しますが、"unicorn" は返すべきではありません。これには何か理由がありますか?

if random.randint(0,10) < 5:
    print("dog")    
elif  random.randint(0,10) > 5:
    print("cat")    
elif  random.randint(0,10) == 5:
    print("hamster")    
else:
    print("unicorn")
4

8 に答える 8

8

比較するたびに新しい乱数が得られます。おそらくあなたが意味したのは:

my_random_int = random.randint(0,10)

if my_random_int < 5:
    print("dog")

elif  my_random_int > 5:
    print("cat")

elif my_random_int == 5:
    print("hamster")

else:
    print("unicorn")
于 2013-03-01T14:14:23.267 に答える
4

random.randint到達するたびに再度呼び出され、毎回異なる結果が生成される可能性があります(これが関数の目的であるため)。

同じ値で繰り返しテストする場合は、最初に値を保存します。

于 2013-03-01T14:13:59.523 に答える
3

乱数は一度だけ作成する必要があります!

val = random.randint(0,10)
if val < 5:
    print("dog")

elif val > 5:
    print("cat")

elif val == 5:
    print("hamster")

else:
    print("unicorn")
于 2013-03-01T14:14:16.110 に答える
2

>=5正しいインデントを想定すると、3つのランダムなintがそれぞれ、、、<=5および「not 」である理由はありません5

あなたはおそらくこれをするつもりでした:

value = random.randint(0, 10)

if value < 5:
    print("dog")
elif value > 5:
    print("cat")
elif value == 5:
    print("hamster")
else:
    print("unicorn")

今、ユニコーンのチャンスはありません。

于 2013-03-01T14:14:21.987 に答える
1

乱数は呼び出すたびに異なるrandom.randintため、最初の if をテストしてそれを超えると 7 になる可能性があり、次に 3、次に 4、そしてバム、ユニコーンになります。

random.randintの先頭で一度だけ呼び出しif、その値を保存して代わりにチェックする必要があります。

myrand = random.randint(0,10)
if myrand < 5:
  print("dog")    
elif myrand > 5:
  print("cat")    
elif myrand == 5:
  print("hamster")    
else:
  print("unicorn")
于 2013-03-01T14:14:56.140 に答える
0

ここでの問題は、毎回新しい乱数を生成していることです。一度作成してから変数に割り当てて、それを確認する必要があります。

于 2013-03-01T14:14:02.463 に答える
0

ランダムな整数を 1 つだけ作成する必要があります。

コードは次のようになります。

myRandom = random.randint(0,10)

if myRandom < 5:
    print("dog")    
elif  myRandom > 5:
    print("cat")    
elif  myRandom == 5:
    print("hamster")    
else:
    print("unicorn") 
于 2013-03-01T14:16:45.223 に答える
0

3 つの異なる乱数を生成しています。あなたが考えているのはこれです:

random_number = random.randint(0,10)

if random_number < 5:
    print("dog")

elif random_number > 5:
    print("cat")

elif random_number == 5:
    print("hamster")

else:
    print("unicorn")

このコードは 1 つの単語のみを返し、「unicorn」は返しません。

于 2013-03-01T14:15:02.890 に答える