2017-09-21 2 views
0
import time 
import sys 
pass1 = False 
while pass1 == False: 
    bob = int(0) 
    hi = int(4) 
    password = input("Enter your 4 digit number password: ") 
    if bob == 5: 
     print("Locked out of phone") 
     time.sleep(2) 
     sys.exit() 
    elif password == "5674": 
     print("Correct password") 
     pass1 = True 
    else: 
     hi -= 1 
     print("Incorrect password, remaining attempts = ",hi) 
     bob = bob + 1 

Je ne sais pas pourquoi il ne suffit pas de soustraire et ajouter 1 aux variables "salut" et "bob".Python ne fait pas les maths

+0

Vous avez 'bob = 0' dans la boucle. – Barmar

+1

Pourquoi écrivez 'int (0)' au lieu de '0'? – Barmar

+0

vous réinitialiser bob et salut à l'intérieur de la boucle. il suffit de les mettre à l'extérieur et il se déroulera comme prévu –

Répondre

2

hi et bob sont réinitialisés chaque fois que vous entrez dans la boucle. Déplacer l'initialisation en dehors de la boucle et vous devriez être OK:

bob = 0 
hi = 4 
while not pass1: 
    # loop body... 
+0

OH, merci. Je suis tellement idiot. –

+1

Accepter et voter la réponse si elle vous a aidé. – duffymo

1

Comme états @Barmar, votre initialisation variable passe à l'intérieur de la boucle. Corrigez-le comme ceci:

import time 
import sys 
pass1 = False 
bob = 0 
hi = 4 
while pass1 == False: 
    password = input("Enter your 4 digit number password: ") 
    if bob == 5: 
     print("Locked out of phone") 
     time.sleep(2) 
     sys.exit() 
    elif password == "5674": 
     print("Correct password") 
     pass1 = True 
    else: 
     hi -= 1 
     print("Incorrect password, remaining attempts = ",hi) 
     bob = bob + 1 
2

Cela fonctionne réellement, mais au début de la boucle vous réinitialisez vos variables. Il pourrait être utile de se familiariser avec un outil comme pudb pour comprendre des choses comme ça.

Voici votre code avec quelques améliorations supplémentaires ainsi:

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

import time 
import sys 

tries = 0 
maxtries = 4 

while True: 
    tries += 1 
    if tries > maxtries: 
     print("Locked out of phone") 
     time.sleep(2) 
     sys.exit() 

    password = input("Enter your 4 digit number password: ") 
    if password == "5674": 
     print("Correct password") 
     break 
    else: 
     print("Incorrect password, remaining attempts = ", maxtries - tries) 
  • déplacé Initialisation variable en dehors de la boucle
  • enlevé les int inutiles appels
  • fait la boucle plus pythonique
  • a donné les variables noms sensibles

Espérons que cela aide!