for循环如何知道增量

时间:2015-07-19 10:56:59

标签: python for-loop

在定义Fibonacci序列时,使用了以下代码:

def fibonacci(n):
    current=0
    after=1
    for i in range(1,n):
        current,after=after,current+after
    return after

每次通过时,for循环如何知道增加1?我尝试使用while循环while e<=n:并返回错误,因为我没有定义e

3 个答案:

答案 0 :(得分:3)

python中的for循环遍历项目或生成器。在您的示例中,range(1,n)将在python2中的list之间返回[1, n)个元素,或者在{python3中yield for生成for item in [1, 6, 8, 9]: print(item)

基本上,range循环可以迭代任何类型的 iterables

range(1, 10, 1)  # The defaut [1 .. 9] numbers
range(1, 10, 2)  # From 1 until 9 with 2 of increment

将打印1,6,8和9。

使用import time import pyautogui import wx import threading import sys import win32api class bucky(wx.Frame): def __init__(self,parent,id): self.positionx = "" self.positiony = "" wx.Frame.__init__(self,parent,id,'AutoClick 2.0', size=(300,200)) panel=wx.Panel(self) self.buttonpos=wx.Button(panel,label="Left Screen",pos=(30,10),size=(80,40)) self.buttonpos2=wx.Button(panel,label="Right Screen",pos=(180,10),size=(80,40)) self.button=wx.Button(panel,label="Start",pos=(120,90),size=(60,30)) self.button2=wx.Button(panel,wx.ID_EXIT,label="Exit",pos=(120,120),size=(60,30)) self.Bind(wx.EVT_BUTTON, self.action, self.button) self.Bind(wx.EVT_BUTTON, self.closebutton, self.button2) self.Bind(wx.EVT_BUTTON, self.position, self.buttonpos) self.Bind(wx.EVT_BUTTON, self.position, self.buttonpos2) self.Bind(wx.EVT_CLOSE, self.closewindow) def position(self, event): label = event.GetEventObject().GetLabel() if label == "Left Screen": self.positionx = 1640 self.positiony = 183 self.buttonpos.Disable() self.buttonpos2.Enable() elif label == "Right Screen": self.positionx = 3308 self.positiony= 186 self.buttonpos.Enable() self.buttonpos2.Disable() def closebutton(self,event): self.Destroy() def closewindow(self,event): self.Destroy() def action(self,event): self.button.Disable() def callback(): while 1: pos = pyautogui.position() time.sleep(10) pos1 = pyautogui.position() if (pos1[0] == pos[0]) and (pos1[1] == pos[1]): win32api.SetCursorPos((self.positionx, self.positiony)) pyautogui.click() else: pass t = threading.Thread(target=callback) t.start() if __name__=='__main__': app=wx.PySimpleApp() frame=bucky(parent=None,id=1) frame.Show() app.MainLoop() ,有一个第3个可选参数,允许您指定增量:

A = rand(3,3,3);

P(1) = max(max(A(:,:,1)));
P(2) = max(max(A(:,:,2)));
P(3) = max(max(A(:,:,3)));

答案 1 :(得分:1)

for循环不会递增,而是迭代

for循环不会递增,而是要求所谓的iterable提供值来处理。

在您的示例中,iterable为range(1,n)

在Python 2.x中,range(1, n)创建了一个值列表,for循环只要求列表在每次运行中提供下一个值,直到列表从值中耗尽。< / p>

在Python 3.x中,range(1, n)已经过优化,并返回特殊的可迭代类型<range>,当for循环询问时,它会提供下一个值。

答案 2 :(得分:0)

默认情况下,如果您没有指定您的步骤,即i在范围内(开始,停止,步骤),则增量被视为一个增量,否则它是您指定的步骤。