簡體   English   中英

python 程序,想打印 5 次嘗試完成,如果使用

[英]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循環中使用elseelse將在循環完成后運行,而不會遇到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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM