[英]How to replace all 0s and all 1s from a pandas dataframe with random numbers?
[英]How come this function returns 0s rather than random numbers
基本上,我正在嘗試創建一個上下樓層的函數,因為它從 1 - 6 中選擇一個隨機數。但是,它返回一堆 0 而不是隨機數列表。 一直持續到第100層。
我已經嘗試將 'f' 變量的定義移動到不同的位置,看看它是否有效,我嘗試改變它計算是向上還是向下移動的方式。
def roll():
f=0
arry = []
count = 0
while count is not 100:
numb = randint(1,6)
if numb is 1 or 2:
f-1
elif numb is 3 or 4 or 5:
f+1
else:
f + randint(1,6)
count=count+1
arry.append(f)
return arry
實際結果應該是一系列隨機數,但我得到的是一堆 0。
對於為什么會得到一個零數組的簡短回答是,每次通過循環時,您都會附加f
的值,該值在代碼中永遠不會改變。 它很早就被初始化為 0,但從未改變。 你會想寫
f -= 1
和
f += 1
和
f += randint(1,6)
但是,還有一些錯誤需要糾正,這對於初學者來說很常見。 例如,你寫道:
if numb is 1 or 2:
這將始終為True
因為在 Python 中這與以下內容相同:
if (numb is 1) or 2:
你應該寫:
if numb == 1 or numb == 2:
甚至:
if numb in (1, 2):
對下一個條件做同樣的事情,例如:
if numb in (3, 4, 5):
此外,避免is not
與數字,與使用時務!=
來代替。
這應該讓你真正接近你正在尋找的東西。
你永遠不會修改f
。 不過,您的代碼還有許多其他問題。
def roll():
f = 0
arry = []
count = 0
while count is not 100:
numb = randint(1,6)
if numb is 1 or 2: # this will always be true
f -= 1
elif numb is 3 or 4 or 5:
f += 1
else:
f += randint(1,6)
count=count+1
arry.append(f)
return arry
def roll():
f = 0
arry = []
count = 0
while count is not 100:
numb = randint(1,6)
if numb in (1, 2):
f -= 1
elif numb in (3, 4, 5):
f += 1
else:
f += randint(1,6)
count=count+1
arry.append(f)
return arry
您的問題是您永遠不會為f
分配新值。
寫入f+1
或f-1
不會改變f
的值,而是返回一個新值,該值等於f
的值加減 1。
你應該寫的是:
f = f+1
f = f-1
以獲得您想要的結果。
原因是你執行了操作
f-1
f+1
f + randint(1,6)
相反,你應該做
f= f-1
f= f+1
f= f + randint(1,6)
所以功能應該是
def roll():
f=0
arry = []
count = 0
while count is not 100:
numb = randint(1,6)
if numb is 1 or 2:
f=f-1
elif numb is 3 or 4 or 5:
f=f+1
else:
f=f + randint(1,6)
count=count+1
arry.append(f)
return arry
希望能幫助到你
你的代碼應該是這樣的...問題已經解釋過了。
import random
def roll():
f=0
arry = []
count = 0
while count is not 100:
numb = random.randint(1,6)
if numb == 1 or numb == 2:
f -= 1
elif numb == 3 or numb == 4 or numb == 5:
f += 1
else:
f = f + random.randint(1,6)
count += 1
arry.append(f)
return arry
roll = roll()
print(roll)
其他人已經解釋了為什么它沒有按預期工作我想添加使用
while count is not 100:
這里是不是最好的主意,在技術上它的工作原理,但is
是不應該被用於整數值的比較,例如:
x = 294
print(x is 294)
將產生False
,因此為了檢查數字是否相同,您應該使用==
運算符並檢查是否不相等!=
運算符,因此在您的情況下, while
應該是:
while count != 100:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.