[英]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.