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