每次循环重复时,如何向另一个添加数字

时间:2013-09-30 18:43:05

标签: python loops clock

所以在学校,我们的老师要求我们制作一个需要密码才能授予访问权限的程序。我已经做了这个,但是我希望通过添加一个循环计数来改进它,每次循环都会增加循环计数到目前为止的循环计数,但它不起作用。

import time
b=0
a='apple'

def start():
    print("enter password")
    c=input("->  ")
    if c==a:
        grant()
    else:
        delay()

def grant():
    end

def delay():
    b=b+1
    time.sleep(b)
    start()

start()

2 个答案:

答案 0 :(得分:3)

Python无法识别b中的delay(),因为它位于全局范围内。

试试这个:

def delay():
    global b
    b=b+1
    time.sleep(b)
    start()

答案 1 :(得分:3)

你的问题在这里:

def delay():
    b=b+1
    time.sleep(b)
    start()

执行b = b + 1时,您希望文件顶部的b变量增加1,对吗?

你可能还没有学到这一点,但之所以不起作用的原因是因为有scope的东西。

要解决此问题,您需要将delay功能更改为如下所示:

def delay():
    global b
    b=b+1
    time.sleep(b)
    start()

从查看代码开始,我认为你还没有学会如何使用while循环?

您在start内反复调用delay的解决方案实际上非常聪明。但是,如果我们使用while循环,我们可以重写您的程序,以便它更清晰,更明显,您要尝试做什么:

import time

password = 'apple'

def start():
    counter = 0
    user_guess = ''

    while user_guess != password:
        print("enter password")
        user_guess = input("->  ")
        if user_guess != password:
            counter += + 1          # Same thing as doing `counter = counter + 1`
            time.sleep(counter)

    grant()

def grant():
    print "Access granted!"

start()