這段代碼返回「貓」,「狗」,「倉鼠」,和「獨角獸」,但它根本不應該返回「獨角獸」!這有什麼理由嗎?如果Python中有比較語句
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")
這段代碼返回「貓」,「狗」,「倉鼠」,和「獨角獸」,但它根本不應該返回「獨角獸」!這有什麼理由嗎?如果Python中有比較語句
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")
random.randint
再次到達它每次調用時,潛在地產生每一時間(因爲這是該函數的目的)不同的結果。
如果您想用相同的值重複測試,請先存儲該值。
謝謝!我把它定爲一個術語,現在它運行良好,根本沒有獨角獸出現。 – Ataulf 2013-03-01 14:16:12
@Ataulf:更多的謝謝是一個被接受的答案讚賞! ;-) – 2013-03-01 14:19:44
這裏的問題是您每次都會生成一個新的隨機數。您應該創建一次,然後將其分配給一個變量,然後檢查。
您應該只創建一次隨機數!
val = random.randint(0,10)
if val < 5:
print("dog")
elif val > 5:
print("cat")
elif val == 5:
print("hamster")
else:
print("unicorn")
假設正確的壓痕,沒有理由對三個隨機整數分別爲>=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")
現在有沒有獨角獸的機會。
您會在每次比較中獲得新的隨機數。你大概意思是:
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")
你的隨機數是不同的每次你打電話random.randint
所以當你考第一,如果現在已經超過了它,然後3,然後是4,然後砰一聲,你可能是7在獨角獸。
您應該在if
的開頭只撥打random.randint
一次,保存其值並檢查它。
myrand = random.randint(0,10)
if myrand < 5:
print("dog")
elif myrand > 5:
print("cat")
elif myrand == 5:
print("hamster")
else:
print("unicorn")
您正在生成三個不同的隨機數。你在想什麼:
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")
這段代碼只會返回一個字,並且永遠不會返回「獨角獸」。
您只需要創建一個隨機整數。
你的代碼應該是:
myRandom = random.randint(0,10)
if myRandom < 5:
print("dog")
elif myRandom > 5:
print("cat")
elif myRandom == 5:
print("hamster")
else:
print("unicorn")
> =和<=是什麼原因?我沒有把握這個問題。此外,OP抓住了== 5的結果! – 2013-03-01 14:18:29
@DonQuestion Nevermind - 我沒有看到他使用過==。 – xxmbabanexx 2013-03-01 14:20:32
然後我建議你調整你的答案,那裏有一些巨魔會喜歡downvote你的答案,因爲這個! ;-) – 2013-03-01 14:21:51
檢查你的縮進! – 2013-03-01 14:12:57
@DavidZwicker:我修正了縮進,這個縮進只是因爲我格式化的原因。 – 2013-03-01 14:13:23
它可能發生。你對隨機函數使用3個不同的調用...這意味着,可能發生的第一個隨機調用返回6:所以第一個表達式是假的,第二個是4,所以這也是錯誤的,第三個不是5,並且哇!獨角獸...... – ppeterka 2013-03-01 14:16:27