0
votes

Python - l'opérateur "et" ne fonctionne pas correctement

Pour une raison quelconque, l'opérateur et code> ne fonctionne pas correctement dans le pendant code> boucle.

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>

    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")


2 commentaires

Utilisez ou au lieu de et . Pensez-le.


@ Aran-Fey a raison, le problème est avec la logique et non l'opérateur.


3 Réponses :


2
votes

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


0 commentaires

0
votes

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


0 commentaires

0
votes

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")


0 commentaires