[英]Python programs using Loops
鑒於此Python程序:
num = input("Enter a number: ")
result = 1024
for i in range(num):
result = result / 2
print result
如果輸入的數字為4,為什么該程序的輸出為64?
跟蹤程序以查看發生了什么。 range(num)
是range(4)
,其值為0、1、2和3。
當i = 0時,我們將1024除以2得到512。
當i = 1時,我們將512除以2得到256。
當i = 2時,我們將256除以2得到128。
當i = 3時,我們將128除以2得到64。
瞧! 有你的64。
更一般而言,循環的每次迭代將result
除以2,因此在循環的num次迭代之后, result
將為1024/2 num 。 由於1024 = 2 10,這意味着,其結果是2 10/2 NUM = 2 10 - NUM。 就是說,如果num > 10
,因為result
是一個整數,Python將舍入為零。 換一種說法:
range(num)
為空范圍,程序將輸出1024。 希望這可以幫助!
您只需在代碼中添加一些調試語句,即可看到發生了什么:
num = input("Enter a number: ")
result = 1024
print "Starting result %d"%(result)
print range(num)
for i in range(num):
result = result / 2
print "Looping result %d"%(result)
print result
如果運行該命令並輸入4,您將看到:
Enter a number: 4
Starting result 1024
[0, 1, 2, 3]
Looping result 512
Looping result 256
Looping result 128
Looping result 64
64
原因是range(4)
為列表[0,1,2,3]
提供了四個元素,因此這是循環主體執行的次數。
每次執行主體時,您只需將結果的當前值減半:
iteration 1, 1024 -> 512
iteration 2, 512 -> 256
iteration 3, 256 -> 128
iteration 4, 128 -> 64
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.