我是Python的新手,在业余时间以自己的速度学习,但到目前为止,这是我的程序的一部分,我遇到了麻烦:
name = input('\nEnter username: ');
if name == 'Bradley':
pwd = input('Enter password: ')
if pwd == '1234':
print("\nWelcome," , name, "")
time.sleep(2)
command = input("\nEnter Command: ");
代码本身工作正常,但是,如果它不是'Bradley'
或'1234'
,则可能有某些内容,然后打印'Invalid username or password'
,以及然后让它循环回到代码的那一部分。本质上它是一个本地登录脚本。
我喜欢这样的用户'在输入两者之前,他们不知道他们是否输入了错误的用户名或密码,有点像现实生活场景。
答案 0 :(得分:3)
你想要的是一个循环,一旦你得到正确的答案你就会突然出现,但是否则只是再次循环。
while True:
name = input('\nEnter username: ');
if name == 'Bradley':
pwd = input('Enter password: ')
if pwd == '1234':
print("\nWelcome," , name, "")
time.sleep(2)
break
print("Invalid username or password")
现在,如果名字是'布拉德利'并且密码是' 1234',您将break
退出该循环。否则,你不会,你只会再做一遍。由于True
永远是真的,你将永远这样做,直到你得到你想要的答案。
您可以使用任何类型的循环执行此操作,而不仅仅是while True
。例如,如果你想给他们三次机会,然后拯救:
for i in range(3):
name = input('\nEnter username: ');
# etc.
else:
print('Too many tries, go learn how to hack better')
sys.exit(1)
我喜欢这样的用户'在输入两者之前,他们不知道他们是否输入了错误的用户名或密码,有点像现实生活场景。
然后将pwd = …
部分移到if name == 'Bradley'
部分之外:
name = input('\nEnter username: ');
pwd = input('Enter password: ')
if name == 'Bradley':
if pwd == '1234':
# etc.
现在您已经完成了这项工作,您可以简化:
name = input('\nEnter username: ');
pwd = input('Enter password: ')
if name == 'Bradley' and pwd == '1234':
# etc.
现在您只有一个if
,除非else
和name
匹配,否则您可以为其添加pwd
代码。 (返回查看嵌套的if
语句,您应该能够找出为什么很难以这种方式添加else
。)
name = input('\nEnter username: ');
pwd = input('Enter password: ')
if name == 'Bradley' and pwd == '1234':
# etc.
else:
print("Invalid username or password")