簡體   English   中英

使用循環的Python程序

[英]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。
  • 如果輸入的數字在0到10的范圍內,則結果為2 10 num
  • 如果輸入的數字大於10,則結果為0。

希望這可以幫助!

您只需在代碼中添加一些調試語句,即可看到發生了什么:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM