2016-12-05 5 views
-2

誰かが私の手助けをしてくれますか?したがって、ユーザーが3回プログラムを終了すると、プログラム全体が終了しますが、ユーザーが間違ってしまうとプログラムを終了させることはありません。はい、私は再び同じ質問をしていることを知っていますが、私の質問にはまだ答えがありませんので、誰かが助けてください。Pythonのpassowrdプログラムでプログラムを終了させる方法

enter image description here

は、ここで私はアウトしようとしている別の一つです。間違ったパスワードを推測しようとすると、ユーザーが特定の回数の試行を受けた場合に、プログラムを終了する方法に関する提案。私はsys.exitとexit()を使用しようとしていましたが、それは私のために働いていないので、おそらくあなたはそれを試すことができます(ただし先生はそれをIDLEにしたいと思います)。あなたは、これは、より良い方法は、このパスワードでをラップすることですこのよう

import sys 
password = input("Enter password : ") 
for __ in range(2):  # loop thrice 
    if (password=="Test"): 
     break   #user has enterd correct password so break 
    password = input("Incorrect, try again : ") 
else: 
    print ("Locked out") 
    sys.exit(1) 

#You can put your normal code that is supposed to be 
# executed after the correct password is entered 
print ("Correct password is entered :)") 
#Do whatever you want here 

でもを行うことができますwhileループ

内の条件counter==3を移動する必要が

Counter=1 
Password=("Test") 
Password=input("Enter Password: ") 
if Password == "Test": 
    print("Successful Login") 
    while Password != "Test": 
     Password=input("Enter Password: ") 
     Counter=Counter+1 
     if Counter == 3: 
      print("Locked Out: ") 
break 
+2

投稿にテキストとしてコードをコピーしてくださいと画像であなたが私を送ることができるループ –

+1

ありません訂正されたバージョンのスクリーンショットがありがとうございました。ありがとうございました。 –

+0

@JosephYoungにカウンタチェックを移動 –

答えて

0
counter = 1 
password = input("Enter password: ") 
while True: 
    if counter == 3: 
     print("Locked out") 
     exit() 
    elif password == "Test": 
     print("That is the correct password!") 
     break 
    else: 
     password = input("Wrong password, try again: ") 
    counter += 1 
+0

ありがとうございました。私の先生は、プログラムを「物理的に」シャットダウンするような何かを望んでいると言いました。 sys.exit(1) –

+0

exit()はsys.exit()とほぼ同じです プログラムにエラーコード – TheClonerx

0

ものを関数にチェックする。

import sys 
def checkPassword(): 
    password = input("Enter password : ") 
    for __ in range(2): 
     if (password=="Test"): 
      return True 
     password = input("Incorrect, try again : ") 
    else: 
     print ("Locked out") 
     return False 

if (checkPassword()): 
    #continue doing you main thing 
    print ("Correct password entered successfully") 
+0

を返信したい場合は、exit(1)を入力してください返信いただきありがとうございます。しかし、アンダースコアを置くかどうかを記入する必要があります(私はnoobie申し訳ありません)が、空白以外の何らかの理由でプログラムを終了します。 –

+0

@AmirBreakableTvいいえそこには何も記入されていません。つまり、forループがPythonでどのように使われているのか、変数が必要ない場合は '__'(ダブルアンダースコア)が使われます。 3回の試行でパスワードを正しく入力しなかった場合、パスワードは必要に応じてシャットダウンします。正しく入力された場合は、最後の 'else'ブロックの後に実行する必要がある他のステートメントを追加できます。私は私の答えを編集します。 –

+0

@ Grupad Mamadapurありがとう –

0

whileループにカウンタチェックを移動します。

また、Pythonでパスワード入力を取得するためgetpassを使用:)

import sys 
import getpass 

counter = 1 
password = getpass.getpass("Enter Password: ") 
while password != "Test": 
    counter = counter + 1 
    password = getpass.getpass("Incorrect, try again: ") 
    if counter == 3: 
    print("Locked Out") 
    sys.exit(1) 
print("Logged on!") 
+0

ありがとう、私はそれを試してみます。 –

+0

警告:警告(警告モジュールから):行101 return fallback_getpass(プロンプト、ストリーム) GetPassWarning:端末のエコーを制御できません。 警告:パスワード入力がエコー表示されることがあります。 –

+0

これはIDLEエディタを使用しているためです。http://stackoverflow.com/questions/17520292/is-there-easy-way-to-prevent-echo-from-inputあなたのマーカはIDLEを使用しないと私は推測し、あなたにアドバイスするのはあなたもIDLEを使用していないということです) – shash678

関連する問題