如果是Python中的比较语句

时间:2013-03-01 14:11:21

标签: python if-statement

这段代码返回“cat”,“dog”,“hamster”,“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")

8 个答案:

答案 0 :(得分: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")

答案 1 :(得分:4)

每次到达时再次调用

random.randint,每次都可能产生不同的结果(因为这是函数的目的)。

如果要使用相同的值重复测试,请先存储该值。

答案 2 :(得分:3)

您应该只创建一次随机数!

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

elif val > 5:
    print("cat")

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

else:
    print("unicorn")

答案 3 :(得分:2)

假设缩进正确,则没有理由将三个随机整数分别>=5<=5和“不5”。

您可能打算这样做:

value = random.randint(0, 10)

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

现在没有独角兽的机会。

答案 4 :(得分:1)

每次拨打random.randint时,你的随机数就不一样了,所以当你测试第一个if然后经过它,然后是3个,然后是4个,然后是bam时,你可能是7个,你就是独角兽。

您应该在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")

答案 5 :(得分:0)

这里的问题是你每次都会生成一个新的随机数。您应该创建一次然后将其分配给变量,然后检查它。

答案 6 :(得分: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")

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

答案 7 :(得分:0)

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

您的代码应为:

myRandom = random.randint(0,10)

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