[英]python program, want to print 5 attempts done, if used
如果我不正確地使用所有嘗試,我想打印 5 次嘗試完成
def user_name_repeat():
for repeat_user_name in range(4):
re_enter_user_name = input("Incorrect username, try again: ")
if re_enter_user_name == "vishesh":
print("Correct user name ur logged in")
break
input_ = input("enter user name: ")
if input_ == "vishesh":
print("Correct user id, you are logged in: ")
elif input_ != "vishesh":
print(user_name_repeat())
為什么不將整個東西包裹在一個循環中?
for _ in range(5):
input_ = input("enter user name: ")
if input_ == "vishesh":
print("Correct user id, you are logged in")
break
else:
print('Incorrect username, try again')
else:
print('Attempts exhausted')
有關for/else
更多信息
編輯:您還可以使用以下內容修復您自己的代碼中的邏輯 -
def user_name_repeat():
for repeat_user_name in range(4):
re_enter_user_name = input("Incorrect username, try again: ")
if re_enter_user_name == "vishesh":
print("Correct user name ur logged in")
return True
return False
input_ = input("enter user name: ")
if input_ == "vishesh":
print("Correct user id, you are logged in: ")
elif input_ != "vishesh":
if not user_name_repeat():
print('Attempts exhausted')
實際上,您只需要從 function 中返回一個指示符(在這種情況下為 boolean 值),以讓調用者知道嘗試是否成功。
由於您使用的是 function,因此您應該簡單地返回字符串,而不是將其打印在 function 中。 這樣,您可以在for
循環之后返回“不正確”的字符串。
def user_name_repeat():
for repeat_user_name in range(4):
re_enter_user_name = input("Incorrect username, try again: ")
if re_enter_user_name == "vishesh":
return "Correct user name ur logged in"
return "Number of incorrect tries exceeded limit"
另一種方法是使用for
循環的else
子句。 在循環中, else
子句中的代碼只有在(以及何時)循環“自然”結束時才會執行; 也就是說 - 當運行循環的條件停止有效時(例如,當for
到達range(4)
的末尾時)。
在您的代碼中,循環僅在達到錯誤嘗試的限制時才會結束,因為如果用戶輸入了正確的密碼,您就會break
循環。 所以可以做到以下幾點:
def user_name_repeat():
for repeat_user_name in range(4):
re_enter_user_name = input("Incorrect username, try again: ")
if re_enter_user_name == "vishesh":
print("Correct user name ur logged in")
break
else:
print("Number of incorrect tries exceeded limit")
但是,我應該指出,第一個選項要好得多,特別是考慮到您稍后要打印 function 調用的返回(如果 function 沒有明確的返回,您實際上是在打印None
)。
您甚至可以從 function 中取出代碼,正如 Chase 的回答所指出的那樣,這應該會讓您更輕松;)。
只需在for
循環中使用else
, else
將在循環完成后運行,而不會遇到break
語句。 此外,在您的user_name_repeat()
function 中使用return
,因為您在print(user_name_repeat())
中調用它所以它應該返回一些東西給print()
以打印:
def user_name_repeat():
for repeat_user_name in range(4):
re_enter_user_name = input("Incorrect username, try again: ")
if re_enter_user_name == "vishesh":
return("Correct user name ur logged in")
break
else:
return "5 attempts completed"
input_ = input("enter user name: ")
if input_ == "vishesh":
print("Correct user id, you are logged in: ")
elif input_ != "vishesh":
print(user_name_repeat())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.