【问题标题】:How to make sure I only print once?如何确保我只打印一次?
【发布时间】:2017-10-19 20:46:47
【问题描述】:

我是 python 的初学者,我正在尝试创建一个检查密码可变性的程序。

代码已完成,但当我执行它时,它会多次打印相同的消息。但我只希望它打印一次。

def controleer_paswoord(wachtwoord):
    import re
    for item in wachtwoord:
        kleine_letter =  re.search( "[a-z]",wachtwoord)
        hoofd_letter = re.search( "[A-Z]",wachtwoord)
        cijfer = re.search ("[0-9]",wachtwoord)
        karakter = re.search ("[$#@]",wachtwoord)
        lengte = (len(wachtwoord)<6 or len(wachtwoord)>12)
        if kleine_letter == None:
            print("{0} -> Geldig paswoord?  False".format(wachtwoord))
        elif hoofd_letter == None:
            print("{0} -> Geldig paswoord?  False".format(wachtwoord))
        elif cijfer == None:
            print("{0} -> Geldig paswoord?  False".format(wachtwoord))
        elif karakter == None:
            print("{0} -> Geldig paswoord?  False".format(wachtwoord))
        elif lengte == None:
            print("{0} -> Geldig paswoord?  False".format(wachtwoord))
        else:
            print("{0} -> Geldig paswoord?  True".format(wachtwoord))

# wachtwoord = (input("Geef hier uw gewenste wachtwoord in:" ))
wachtwoord = "2w3E"
controleer_paswoord(wachtwoord)

我得到了什么:

#2w3E -> Geldig paswoord?  False
#2w3E -> Geldig paswoord?  False
#2w3E -> Geldig paswoord?  False
#2w3E -> Geldig paswoord?  False

我想要什么:

#2w3E -> Geldig paswoord?  False

【问题讨论】:

  • 为什么会有for循环for item in wachtwoord?您不会在其余代码中使用 item。

标签: python python-3.x printing


【解决方案1】:

for item in wachtwoord:,您正在遍历字符串中的每个字符,这似乎是无意的。您似乎没有在 for 循环内的任何地方使用 item,因此它只是对每个字符以相同的方式重复该过程。尝试删除该行

【讨论】:

  • @X.Feliers 很高兴为您提供帮助,欢迎来到 Stack Overflow。如果此答案或任何其他答案解决了您的问题,请将其标记为已接受。
【解决方案2】:

您打印密码中的每个字符。删除该循环。 re 搜索会遍历整个密码,因此您无需遍历字符。最大的线索是你从不在循环中使用 item - 所以你并没有真正遍历字符串。


一个有用的调试提示:让你的 print 语句独一无二,这样你就可以告诉为什么你在每次迭代中都失败了。

【讨论】:

    猜你喜欢
    • 2010-11-23
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-09
    • 2018-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多