首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python程序,如果使用,要打印5次尝试

python程序,如果使用,要打印5次尝试
EN

Stack Overflow用户
提问于 2020-07-04 13:42:38
回答 3查看 104关注 0票数 0

如果我不正确地使用所有尝试,我想打印已完成的5次尝试

代码语言:javascript
复制
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())
EN

回答 3

Stack Overflow用户

发布于 2020-07-04 13:50:48

为什么不把整个东西包装在一个循环中呢?

代码语言:javascript
复制
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的更多信息

编辑:你也可以在你自己的代码中修改逻辑,比如-

代码语言:javascript
复制
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')

实际上,您只需要从函数返回一个指示符(在本例中是一个布尔值),让调用者知道尝试是否成功。

票数 2
EN

Stack Overflow用户

发布于 2020-07-04 13:53:58

因为您正在使用一个函数,所以您应该简单地返回字符串,而不是在函数内部打印它。这样,您就可以在for循环之后返回“不正确”的字符串。

代码语言:javascript
复制
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循环。因此,可以执行以下操作:

代码语言:javascript
复制
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的答案所指出的那样;)。

票数 0
EN

Stack Overflow用户

发布于 2020-07-04 14:00:53

只需在for循环中使用elseelse将在循环完成后运行,而不会遇到break语句。另外,在您的user_name_repeat()函数中使用return,因为您是在print(user_name_repeat())中调用它的,所以它应该向print()返回一些要打印的内容:

代码语言:javascript
复制
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())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62725753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档