最近在嘗試做一些Python編程,所以我在一些網站上做了一些數學練習。
我遇到了這個例子,起初我不明白這個練習。所以我檢查了解決方案以至少理解這個問題。結果我發現自己學習了一些編碼技巧(比如while True回圈)。
練習很簡單:
撰寫一個 Python 程式來找出前 n 個數字的最小倍數。此外,顯示因素。
下面是代碼:
def smallest_multiple(n):
if (n<=2):
return n
i = n * 2
factors = [number for number in range(n, 1, -1) if number * 2 > n]
print(factors)
while True:
for a in factors:
if i % a != 0:
i = n
break
if (a == factors[-1] and i % a == 0):
return i
我的問題是:
為什么他會創建一個比輸入高 2 倍的數字串列?
然后while回圈很難理解。有人可以向我解釋一下嗎(我的意思是回圈的內容)?
uj5u.com熱心網友回復:
我認為我們這里有數學問題和編程的微小混合體。
首先,請注意空格在編碼中很重要。看看代碼應該是什么樣子。(有空格)
def smallest_multiple(n):
if (n<=2):
return n
i = n * 2
factors = [number for number in range(n, 1, -1) if number * 2 > n]
print(factors)
while True:
for a in factors:
if i % a != 0:
i = n
break
if (a == factors[-1] and i % a == 0):
return i
1- 為什么他要創建一個比輸入高 2 倍的數字串列? 答案:因為雙倍小于最高數字的數字不會影響/改變結果。(這是一道數學題)你可以通過洗掉條件來檢查,你會看到你會得到相同的結果(相同的最小倍數)
2-然后while回圈很難理解。有人可以向我解釋一下嗎(我的意思是回圈的內容)?感謝您的答復?
答案:回圈使用布林值,True因為代碼只會在找到前 n 個數字的最小倍數之前停止。程式員這樣做的原因是因為他使用了return幫助他退出函式的關鍵字,最終退出了while回圈。
回圈使用的值i是前 n 個數字中最大數字的第一個倍數,即該值的兩倍n。然后將檢查這個第一個倍數(意思i)是否不能i % a != 0被串列中從最高的數字整除()。
if i % a != 0:
i = n
break
這種情況是有增加的價值i,只要i是不以任何數量的可分割的前n個數字意味著代碼保持通過的倍數搜索n(n作為串列的最高數),直到i為所有的數字整除串列
一旦該i值能夠滿足以下條件
if (a == factors[-1] and i % a == 0):
然后通過return退出函式的關鍵字退出 while 回圈,并將i值作為對函式呼叫的回應通過行發送,return i
還請注意這factors[-1]是串列的最后一項(數字)。
我希望以上內容是有道理的,并且對您來說很清楚。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/403718.html
標籤:
上一篇:Python字典示例
下一篇:例外:如何顯示導致例外的函式?
