如何在Python中实现其他函数
我刚开始学习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'
,就打印出 '无效的用户名或密码'
,然后让程序回到那部分代码重新输入。其实这就是一个本地登录的脚本。
我希望用户在输入用户名和密码之前,不知道自己输入的是错误的用户名还是密码,类似于现实生活中的情况。
1 个回答
4
你需要的是一个循环,当你得到正确的答案时就跳出这个循环,否则就继续重复这个过程。
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")
比如,如果用户名是'Bradley',密码是'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")