我正在嘗試創建一個串列,其中包含 10 個亂數,范圍為 1 到 10,并使用 while 回圈僅列印串列中可被 3 整除的值。
到目前為止,我制作了這段代碼:
import random
list = []
randlist = random.sample(range(0, 10), 10)
list.append(randlist)
while len(list) > 0:
if (list[0] % 3 == 0):
print(list)
但我得到了錯誤
unsupported operand type(s) for %: 'list' and 'int'
如何修復此代碼?一切都運行完美,直到 while 回圈。
uj5u.com熱心網友回復:
問題是您正在嘗試獲取串列的模數。
在第 4 行:list.append(randlist)中,您將數字串列附加randList到list.
這意味著list[0]將簡單地回傳randList。如果我們想從中檢索一個數字randList,我們可以這樣做:
while len(list) > 0:
if (list[0][0] % 3 == 0):
print(list)
但是,現在不需要,list因為我們知道randList將存盤 10 個亂數。
要找到其中randList可以被 3 整除的數字,我們可以使用回圈遍歷串列并使用 if 陳述句:
for i in randlist:
if i % 3 == 0:
print(i)
如果你真的想使用 while 回圈,我們可以創建一個計數器變數 ,index和while index < len(list),我們可以檢查randListat 索引的元素index是否可以被 3 整除。確保增加 的值,index這樣我們就不會最終陷入無限回圈!
index = 0
while index < len(randlist):
if randlist[index] % 3 == 0:
print(randlist[index])
index = 1
我們也可以使用print(randlist)just 來確保遍歷整個串列并獲得所有 3 的倍數。
我希望這有助于回答你的問題!如果您需要任何進一步的說明或詳細資訊,請告訴我:)
uj5u.com熱心網友回復:
這是因為你已經list在你的代碼中使用了。這使它成為一個嵌套串列,例如[[1, 2, ..]] .
您的代碼的解決方案是:
import random
randlist = random.sample(range(0, 10), 10)
length = len(randlist)
while length > 0:
num = randlist[length-1]
if (num % 3 == 0):
print(num)
length = length - 1
一個簡單的解決方案是使用 for 回圈而不是 while。你可以用 for 回圈來做
import random
randlist = random.sample(range(0, 10), 10)
for num in randlist:
if (num % 3 == 0):
print(num)
您不需要減少indexin for 回圈。
綜合串列也可以做到這一點。
import random
randlist = random.sample(range(0, 10), 10)
moduled_list = [num for num in randlist if num%3 ==0]
print(moduled_list)
uj5u.com熱心網友回復:
問題是您使用append()方法并使用 randlist 作為引數。結果是您將一個串列創建到另一個串列中。您可以通過列印您的串列并查看您獲得的結果來驗證這一點。由于random.sample()方法已經創建了所需的串列,因此您不必在此處使用append()方法。即,在創建包含亂數的串列后,您可以簡單地迭代此回圈中的所有數字,并在每次迭代時檢查該數字是否可被三整除。因此,我建議您使用for回圈而不是while回圈。
以下代碼列印隨機串列中所有可被三整除的數字:
import random
list = random.sample(range(0, 10), 10)
for number in list:
if (number % 3 == 0):
print(number)
第二種更高級的方法是使用串列推導,將所需的數字列印為串列:
import random
print([number for number in random.sample(range(0, 10), 10) if number % 3 == 0])
uj5u.com熱心網友回復:
用串列理解試試這個。
import random
[rand for rand in random.sample(range(0, 10), 10) if rand%3==0]
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/433801.html
