使用break语句时,它只会退出当前所在的内循环,这意味着它仍然会循环外循环。解决此问题的常用方法是将嵌套循环重构为函数并使用return语句退出代码。
另一种方法是添加一些continue语句以避免达到第二个break并且仅在退出内部循环时达到它。像这样的东西:
def check():
users = open('student.txt').read().split('\n')
for i in range(len(users)):
users[i] = users[i].split(',')
while True:
username = str(input('Username: '))
password = str(input('Password: '))
for user in users:
uname = user[3]
pword = user[4]
if uname == username and pword == password:
print('Hello ' + user[0] + '.')
print('You are logged in as: ' + user[3] + '.')
break
else:
print('Wrong username/password.')
print('Try again!\n\n')
# Continue if the inner loop wasn't broken.
continue
# Inner loop was broken, break the outer.
break