Pour une raison quelconque, l'opérateur Lorsque je vais exécuter le code, il quittera la boucle lorsque le mot de passe ou le nom d'utilisateur correspond à la correspondance et non des deux. P> Toute aide serait formidable. P> et code> ne fonctionne pas correctement dans le
pendant code> boucle.
root_password = "password123"
root_username = "root"
username = "default"
password = "default"
while username != root_username and password != root_password:
username = input("Username: ")
password = input("Password: ")
if username != root_username and password != root_password:
print("Wrong Credentials")
print("Welcome")
3 Réponses :
L'opérateur et l'opérateur fait exactement ce qu'il devrait, il reste dans la boucle tant que les deux ne correspondent pas. Ce que vous voulez, c'est une boucle continue jusqu'à ce que les deux correspondons, vous devez donc utiliser l'opérateur ou l'opérateur ici P>
Cela n'entraînera que le nom de nom d'utilisateur et de mot de passe ne correspondra pas. Si le nom d'utilisateur est correct, mais le mot de passe est faux, faux et true = FALSE, et la boucle se terminera. Ce dont vous avez besoin est d'inciter les "mauvais identifiants" lorsque l'un d'entre eux est faux, en utilisant ou.
Il s'agit d'une erreur courante tout en fonctionnant sur des négations ou des compléments. Reportez-vous à la Lois de De-Morgan: P>
username != root_username or password!=root_password
Un moyen de faire cela consiste à créer un conditionnel qui vérifie si le nom d'utilisateur et le mot de passe correspondent à la fois, puis mettez un non code> devant ce conditionnel, comme celui-ci:
root_password = "password123"
root_username = "root"
username = "default"
password = "default"
while not (username == root_username and password == root_password):
username = input("Username: ")
password = input("Password: ")
if not (username == root_username and password == root_password):
print("Wrong Credentials")
print("Welcome")
Utilisez
ou code> au lieu de
et code>. Pensez-le.
@ Aran-Fey a raison, le problème est avec la logique et non l'opérateur.