課程
/后端開發
/Python
/初識Python
def power(x, n=2): ? ?s = 1 ? ?while n > 0: ? ? ? ?n = n - 1 ? ? ? ?s = s * x ? ?return s print power(5) 這段沒看懂,求解答?怎么就是平方了
2017-12-05
源自:初識Python 7-6
正在回答
他這個公式是需要循環三次才讓s=5 n=2 結果是25 比較麻煩
和C++在帶參數的構造函數里一樣作用,如果你傳參數給這個位置,就會用你傳的參數,如果沒有傳參數就用你在定義時默認的參數。所以帶參數的變量一定在參數表的最后面
power(5)運行時,5被賦值給x,由于沒有給n賦值,所以n為2;
s被賦值1;
開始循環,此時n= 2大于0滿足循環條件,進入循環
將n-1得到的差值賦值給n自己(原先的2被覆蓋),此時n=1
將s*5(x被賦值為5)得到的乘積賦值給s,此時s=5
第一次循環結束,返回檢驗循環條件,由于此時n=1仍舊大于0,再次進入循環
將n-1得到的差值賦值給n自己(原先的1被覆蓋),此時n=0
將s*5得到的乘積賦值給s,此時s=5*5=25
第二次循環結束,返回檢驗循環條件,由于此時n=0不大于0,循環結束
返回s的值
可以看到n控制著乘法執行的次數,由于power(5)并沒有對n進行賦值,所以n默認為2也就是進行兩次乘法,所以是平方,如果對n進行賦值,比如power(5,3),那這樣的話就是5*5*5,三次乘法操作
power(5) ?#這里缺省了一個參數,所以后一個參數會使用默認值 x=5,n=2
#然后進入到函數里面
s = 1 ? ?
while n > 0: ?#此時n=2符合條件 ? ? ? ?
n = n - 1 ?#n=1 ? ? ?
s = s * x ?#s=1*5=5
#然后回到while判斷的地方
while n > 0: ?#此時n=1符合條件 ? ? ? ?
n = n - 1 ?#n=0 ? ? ?
s = s * x ?#s=5*5=25
while n > 0: ?#此時n=0不符合條件 ? ?
#因此,默認值n=2的時候實現的是平方的操作
舉報
學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-06-03
他這個公式是需要循環三次才讓s=5 n=2 結果是25 比較麻煩
2017-12-05
和C++在帶參數的構造函數里一樣作用,如果你傳參數給這個位置,就會用你傳的參數,如果沒有傳參數就用你在定義時默認的參數。所以帶參數的變量一定在參數表的最后面
2017-12-05
power(5)運行時,5被賦值給x,由于沒有給n賦值,所以n為2;
s被賦值1;
開始循環,此時n= 2大于0滿足循環條件,進入循環
將n-1得到的差值賦值給n自己(原先的2被覆蓋),此時n=1
將s*5(x被賦值為5)得到的乘積賦值給s,此時s=5
第一次循環結束,返回檢驗循環條件,由于此時n=1仍舊大于0,再次進入循環
將n-1得到的差值賦值給n自己(原先的1被覆蓋),此時n=0
將s*5得到的乘積賦值給s,此時s=5*5=25
第二次循環結束,返回檢驗循環條件,由于此時n=0不大于0,循環結束
返回s的值
可以看到n控制著乘法執行的次數,由于power(5)并沒有對n進行賦值,所以n默認為2也就是進行兩次乘法,所以是平方,如果對n進行賦值,比如power(5,3),那這樣的話就是5*5*5,三次乘法操作
2017-12-05
power(5) ?#這里缺省了一個參數,所以后一個參數會使用默認值 x=5,n=2
#然后進入到函數里面
s = 1 ? ?
while n > 0: ?#此時n=2符合條件 ? ? ? ?
n = n - 1 ?#n=1 ? ? ?
s = s * x ?#s=1*5=5
#然后回到while判斷的地方
while n > 0: ?#此時n=1符合條件 ? ? ? ?
n = n - 1 ?#n=0 ? ? ?
s = s * x ?#s=5*5=25
#然后回到while判斷的地方
while n > 0: ?#此時n=0不符合條件 ? ?
#因此,默認值n=2的時候實現的是平方的操作