如果我不正确地使用所有尝试,我想打印已完成的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())发布于 2020-07-04 13:50:48
为什么不把整个东西包装在一个循环中呢?
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')实际上,您只需要从函数返回一个指示符(在本例中是一个布尔值),让调用者知道尝试是否成功。
发布于 2020-07-04 13:53:58
因为您正在使用一个函数,所以您应该简单地返回字符串,而不是在函数内部打印它。这样,您就可以在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")但是,我应该指出,第一种方法要好得多,特别是考虑到您稍后要打印函数调用的返回(如果函数没有显式返回,则实际上打印的是None)。
您甚至可以将代码从函数中删除,这应该会使事情变得更容易,正如Chase的答案所指出的那样;)。
发布于 2020-07-04 14:00:53
只需在for循环中使用else,else将在循环完成后运行,而不会遇到break语句。另外,在您的user_name_repeat()函数中使用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())https://stackoverflow.com/questions/62725753
复制相似问题