[英]Python 3 While Loop within a function
編寫一個名為
powPosInt
的函數。 該函數將采用兩個整數輸入參數,命名為x
和p
。 此函數將計算x
的p
冪,其中p >= 0
,定義為x
的p = x × · · · × x
冪p = x × · · · × x
| {z } p 次或 1 如果 p 是 0。該函數將返回此計算結果。 此函數不應產生任何控制台輸出。
為了計算
x
的p
次方,我要求您使用 while 循環和累加器變量來實現計算。您應該測試的值示例:
x = 2
,p = 3
應該返回8
。x = 1
,p = 4
應該返回1
。x = 7
,p = 0
應該返回1
。x = −3
,p = 2
應該返回9
。x = −3
,p = 3
應該返回−27
。
這就是我到目前為止所擁有的,我無法弄清楚如何在這個函數中放置一個 while 循環。 我在這里尋求幫助,因為我的老師不會提供幫助,(他希望我們將他的班級視為現實世界,在那里我們必須自己找出解決方案......為什么要支付他的薪水?)
def powPosInt(x,p):
number = p
count = 0
while (number != 0):
answer = (x**p)
count = count + 1
if (p<0):
answer = (x**(1/abs(p)))
return answer
使用累加意味着您需要創建一個變量來存儲結果,而 while 循環會將其每一步乘以x
。 您不應該使用**
運算符。
steps = 0
result = 1
while (steps < p):
result *= x
steps += 1
def powPosInt(x,p):
number = p
count = 0
while (number != 0):
answer = (x**p)
count = count + 1
if (p<0):
answer = (x**(1/abs(p)))
return answer
我在這里看到一些問題:
計算冪的循環將使用重復乘法,而不是求冪。 這里的原意是假定Python沒有一個冪運算符,否則這項任務將是徒勞的。
沒有理由處理負冪,規范明確要求p >= 0
。 因此,您的最終if
塊是不必要的。
這只是一個風格問題:你應該養成使用有意義的變量名的習慣。 現在我使用單字母變量的唯一情況是一個短期的、非嵌套的循環,其中變量名無關緊要(我使用i
)。 對於任何其他情況,我使用解釋性名稱(是的,對於嵌套循環,甚至不使用j
或k
)。 我什至開始在這些簡單的情況下不再使用i
。
說了這么多,我建議重新審視您的解決方案以將這些考慮在內。
完成此操作后,您可以參考以下代碼以獲取一種解決方案:
def powPosInt(myBase, myPower):
result = 1
for _ in range(myPower):
result *= myBase
return result
而且,如果您想獲得額外的積分(a) ,您可以進行合同檢查以確保呼叫者做正確的事情:
def powPosInt(myBase, myPower):
if type(myBase) != int: raise TypeError("Base must be an integer")
if type(myPower) != int: raise TypeError("Power must be an integer")
if myPower < 1: raise ValueError("Power must be >= 1")
result = 1
for _ in range(myPower):
result *= myBase
return result
(a)或者冒着成為聰明的亞歷克而失去分數的風險。 這在很大程度上取決於您老師的個性:-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.