2017-09-21 6 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 

私はなぜ変数 "hi"と "bob"に1を減算して追加するのか分かりません。Pythonは数学をしていません

+0

ループ内に 'bob = 0'があります。 – Barmar

+1

なぜ '0'の代わりに' int(0) 'を書いていますか? – Barmar

+0

ループ内でボブとハイをリセットします。ちょうどそれらを外に置くと、それは期待どおりに実行されます –

答えて

2

hiおよびbobは、ループに入るたびに再初期化されます。ループの外側で初期化を移動してください。

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

ああ、ありがとう。私はそんなにばかです。 –

+1

それがあなたを助けたら、答えを受け入れて投票してください。 – duffymo

1

@Barmarは、ループ内で変数の初期化が行われていることを示しています。

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

実際には動作していますが、ループの始めに変数をリセットします。このようなことを理解するには、pudbのようなツールに慣れ親しんでおく価値があります。

がここにもいくつかの余分な改善であなたのコードです:

#!/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) 
  • がループ
  • の外の変数の初期化を移動
  • 不要int呼び出しを削除もっとニシキヘビループを作っ
  • を与えました変数は分かりやすい名前

希望します。

関連する問題