所以我撰寫了這段代碼來查找串列中的所有數字是否都是數字的倍數k:,但它似乎不起作用。這是我的代碼。
k = 4
a: list= [3, 4, 4, 3]
def allMultiplesofK(k, a):
for x in list(a):
if x // k == 0:
return True
if x // k != 0:
return False
print(allMultiplesofK(k, a))
我的代碼有什么問題??如果發現任何錯誤的輸入、代碼、程式,請幫助我更正。謝謝你。
uj5u.com熱心網友回復:
使用%7代替//7。// 會給你整數商, % 會給你余數。假設某個數字 49, 49//7 是 7,49%7 是 0。另一個例子 26, 26//7 是 3,26%7 是 5
uj5u.com熱心網友回復:
您的代碼有兩個問題。
首先,您需要使用%來獲取除法的其余部分x / k。
其次,在執行此操作時,一旦在串列中發現一個數字是 的倍數,就立即退出該函式k:您不檢查串列中的剩余專案。
這是您的代碼的修改版本:
k = 4
a: list= [3, 4, 4, 3]
def allMultiplesofK(k, a):
for x in list(a):
if x % k != 0:
return False
return True # all items of a are multiples of k
print(allMultiplesofK(k, a))
uj5u.com熱心網友回復:
在您的代碼中,return只要滿足條件,回圈內部就會退出回圈,因此,它不會檢查串列中的所有數字。您可以使用例如串列理解和all標準庫中的函式,請參閱檔案,
def allMultiplesofK(k, a):
return all(map(lambda p: p % k == 0, a))
return all([p % k == 0 for p in a]) # with list comprehension
k = 4
a: list= [3, 4, 4, 8]
print(allMultiplesofK(k, a))
# False
a: list= [12, 4, 4, 8]
print(allMultiplesofK(k, a))
# True
uj5u.com熱心網友回復:
您實際上并沒有檢查回圈的每個專案。
for x in list(a):
if x // k == 0:
return True
if x // k != 0:
return False
這是在僅檢查串列中的第一項后從函式回傳的。
此外,您檢查一個數字是否可以被另一個數字整除的方式也不太正確。您應該使用模運算子“%”。此運算子為您提供除法后的余數。
3 % 4 = 3 # since 4 goes into 3, 0 times with 3 remaining.
因此你的程式應該變成:
k = 4
a: list= [3, 4, 4, 3]
def allMultiplesofK(k, a):
for x in list(a):
if x % k != 0:
return False
return True
print(allMultiplesofK(k, a))
uj5u.com熱心網友回復:
使用模而不是地板除法。
樓層劃分: 這會給你商
模數: 這會給你余數。
k = 4
a = [3, 4, 4, 3]
def allMultiplesofK(k, a):
for x in list(a):
if x % k == 0:
return True
else:
return False
print(allMultiplesofK(k, a))
output: False
但這不會給出所有數字結果,即它會列印最后一個值 3%4 False。
result = [True if i % k == 0 else False for i in a]
print(result)
Output: [False, True, True, False]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/310970.html
上一篇:模板語法錯誤無法決議剩余部分:來自'static("images/logo.png")'的'("images/logo.png")
下一篇:查找字串中重復單詞旁邊的字母
