我是一個Python的初學者,並教我自己的列表解析。幾乎所有我已經轉化爲列表理解的for循環代碼我都做得很好,但是我很堅持我認爲是一個相當簡單的循環。Python for循環列表理解
n = 10000
def sim(y):
count = 0
for i in range(10000):
if 0.9 <= y[i] <= 1.8:
count += 1
probability = count/10000.0
print("P(a < x <= b) : {0:8.4f}".format(probability))
print ("\t case: \n"),sim([0.25 if random() < 0.8 else 1.5 for r in range(n)])
到目前爲止,我一直在嘗試以下的變化,但它是諸如「‘廉政’的對象是unsubscriptable」和「不支持的操作數類型(S)爲+與使用名單的所有收到錯誤信息: 'int'和'list'「。
def sim(y):
c4 = sum([y for range(y) in range(len(y)) if 0.9 < y[i] <= 1.8])/10000
print("P(a < x <= b) : {0:8.4f}".format(c4))
目的是基本上採取傳遞到SIM(參數)和迭代它的長度,同時通過1僅用於那些值遞增發現爲真0.9和1.8之間的條件。我試圖檢查n條隨機數中的每一個。然後只求和那些是真的。
順便說一句,答案應該制定出約0.2 - 如果你要檢查它只是想想1.5是唯一的途徑,以0.9和1.8之間的配合。
我感謝您的耐心,因爲我學習。
感謝Martijn,但它似乎並沒有得到所有的數字總結。它返回0.00結果。我嘗試過0.9
stackuser
@stackuser:啊,那是因爲這是整數除法;改正,以使其浮動分裂。 –
@stackuser:嘗試我的版本..'我'不是'y'的索引,它是來自*'y'的值*。代碼循環遍歷'y',而不是在'range()'上。 –