【问题标题】:check pass boolean function检查通过布尔函数
【发布时间】:2018-06-18 10:54:35
【问题描述】:

这是我的代码,它要求用户输入密码字符串并检查是否有任何重复的元素。问题是我不明白代码以及为什么他们将unique_element 设置为空字符串。还有什么unique+=password[i] 可以吗,为什么i[] 在这个括号里?

def check_pass():     
    password= raw_input('Enter a password:')
    unique_element = ''
    for i in range (len(password)):
        if len(unique_element) == 0:
            unique_element += password [i]     
        else:
            not_unique = True
            for j in range (len(unique_element)):
                if unique_element[j] == password[i]:
                    not_unique = False
            if not_unique:
                unique_element += password[i]
    return unique_element == password
print check_pass()

【问题讨论】:

  • 您正在循环访问密码..for i in range (len(password)): 并访问它..
  • 这是一种非常低效的检查唯一字符的方法。 def check_pass(): password = input('Enter a password:') ; return len(password) == len(set(password))
  • 也很奇怪,这是你的代码,你不理解它......
  • 您提出非常基本的问题。我认为您应该阅读语言文档。了解数据类型、循环和数组会对您有所帮助。

标签: python function boolean


【解决方案1】:

解释上面的代码可能有点乏味。可以这么说,如果您的意图是检查给定的字符串 [password] 是否包含任何重复字符,您可以在不需要任何循环的情况下执行此操作——这(在这种情况下)可能是不必要的。方法如下:

def pass_has_unique_characters():
    # CAPTURE THE ENTERED CHARACTERS
    password        = input('Enter a password:')
    # SETS CANNOT HAVE DUPLICATES SO WE CAST THE STRING (password) TO A SET
    st_password     = set(password)
    # NOW WE CHECK THE LENGTHS OF BOTH: password AND st_password
    # IF BOTH HAVE THE SAME LENGTH, THEN THE PASS HAS UNIQUE CHARACTERS, 
    # RETURN [True] ... OTHERWISE RETURN [False]
    return (True if len(st_password) == len(password) else False)


print(pass_has_unique_characters())

【讨论】:

  • 你能解释一下他是如何处理循环的吗,因为我不知道设置快捷方式
猜你喜欢
  • 2021-09-30
  • 1970-01-01
  • 1970-01-01
  • 2016-10-05
  • 2011-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多