私はプログラムを終了しようとしています。ユーザーがWebサイトの名前とパスワードをリストに保存できるいくつかのオプションを選択できるメニューを追加しました。しかし、Webサイトの名前とパスワードをそれぞれのボールトに追加するとすぐに問題が発生しました。ここで、Webサイトの名前とパスワードを追加した後にオプションを選択しようとすると、「1」はviewappを呼び出すための入力です)機能を使用して、これまで格納されたWebサイトとパスワードを表示します。というのは、viewapp()関数を呼び出すのに2回以上かかることです。最初の期待される入力を拒否し、2番目の入力を奇妙に受け入れます。また、summary()を呼び出す目的で3番目のオプションを選択すると、印刷された要約全体が2回印刷されます。これは、2番目の予想入力を受け入れるだけのメニューと同様のパターンです。プログラムは、この迷惑なバグを除いて、私が望むことをやっています。これらの4つのオプションを選択すると、すぐにその関数にジャンプするはずの入力をもう一度求めます。ヘルプをいただければ幸いです。Python:入力を二度要求し、重複した印刷ステートメントを出力する
appvault = []
passvault = []
def logged():
print("----------------------------------------------------------------------\n")
print("Hello, welcome to the password vault console. ")
modea = input("""Below are the options you can choose from in the password vault console:
##########################################################################\n
1) Find the password for an existing webiste/app
2) Add a new website/app and a new password for it
3) Summary of the password vault
4) Exit
##########################################################################\n
> """).strip()
return modea
def viewapp():
if len(appvault) > 0:
for app in appvault:
print("Here is the website/app you have stored:")
print("- {}\n".format(app))
if len(passvault) > 0 :
for code in passvault:
print("Here is the password you have stored for the website/app: ")
print("- {}\n".format(code))
else:
print("You have no apps or passwords entered yet!")
def addapp():
while True:
validapp = True
while validapp:
new_app = input("Enter the new website/app name: ").strip().lower()
if len(new_app) > 20:
print("Please enter a new website/app name no more than 20 characters: ")
elif len(new_app) < 1:
print("Please enter a valid new website/app name: ")
else:
validapp = False
appvault.append(new_app)
validnewpass = True
while validnewpass:
new_pass = input("Enter a new password to be stored in the passsword vault: ")
if not new_pass.isalnum():
print("Your password for the website/app cannot be null, contain spaces or contain symbols \n")
elif len(new_pass) < 8:
print("Your new password must be at least 8 characters long: ")
elif len(new_pass) > 20:
print("Your new password cannot be over 20 characters long: ")
else:
validnewpass = False
passvault.append(new_pass)
validquit = True
while validquit:
quit = input("\nEnter 'end' to exit or any key to continue to add more website/app names and passwords for them: \n> ")
if quit in ["end", "End", "END"]:
logged()
else:
validquit = False
addapp()
return addapp
def summary():
if len(passvault) > 0:
for passw in passvault:
print("----------------------------------------------------------------------")
print("Here is a summary of the passwords stored in the password vault:\n")
print("The number of passwords stored:", len(passvault))
print("Passwords with the longest characters: ", max(new_pass for (new_pass) in passvault))
print("Passwords with the shortest charactrs: ", min(new_pass for (new_pass) in passvault))
print("----------------------------------------------------------------------")
else:
print("You have no passwords entered yet!")
while True:
chosen_option = logged()
print(chosen_option)
if chosen_option == "1":
viewapp()
elif chosen_option == "2":
addapp()
elif chosen_option == "3":
summary()
elif chosen_option == "4":
break
else:
print("That was not a valid option, please try again: ")
print("Goodbye")