Eri*_*Lan 2 python set while-loop
刚开始学习python并尝试使用循环编写代码来检查唯一字母,如下所示:
def has_unique_letters(x):
count = 0
letters = set(x)
while count < len(x):
if x[count] in letters:
return False
count += 1
return True
Run Code Online (Sandbox Code Playgroud)
但无论我在x中输入什么,它都返回false.代码有什么问题?谢谢!
每个字母x都将包含在其中set(letters of x),因此您的功能将始终返回False
要解决您的问题,您可以验证长度set(x)是否等于x:
这是为什么:
def has_unique_letters(x):
return len(set(x)) == len(x)
Run Code Online (Sandbox Code Playgroud)
it returns True如果x仅包含唯一字母,则返回,False否则返回
如果pw中的大写和小写字母是等效的,则必须在处理之前将输入参数转换为较低(或较高)的大小写:
def has_unique_letters(x):
lower_x = x.lower()
return len(set(lower_x)) == len(lower_x)
Run Code Online (Sandbox Code Playgroud)
[edit]在密码上放置一个唯一的字母约束会减少域空间; 也许这不是一个好主意.