这段代码返回“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")
答案 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")