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,<=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,然后 bam,您就是独角兽。

你应该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

您正在生成三个不同的随机数。你的想法是这样的:

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")

此代码只会返回一个单词,并且永远不会返回“独角兽”。

于 2013-03-01T14:15:02.890 回答
0

您只需要创建一个随机整数。

您的代码应该是:

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 回答