.isalpha打印为False但在选中时为True

时间:2016-12-06 14:52:29

标签: python passwords alphanumeric isalpha

这是用于检查密码长度为9个字符,字母数字且至少包含1个数字的函数的一部分。理想情况下,我应该能够使用第一个if语句,但奇怪的是,它并没有运行。我无法弄清楚为什么test1.isalpha以' True'在if语句中,但打印为' False'。

Path file = Files.createTempFile(null, ".txt");
try (InputStream stream = this.getClass().getResourceAsStream("/key.txt")) {
    Files.copy(stream, file, StandardCopyOption.REPLACE_EXISTING);
}

aesEncrypt.setSecretKey(file.toString());

3 个答案:

答案 0 :(得分:1)

在if(if (test1.isalpha):)中,您正在测试方法实例,而不是此方法的结果。

您必须使用if (test1.isalpha()):(括号)

答案 1 :(得分:0)

您必须if test1.isalpha()而不是if test1.isalpha

test1.isalpha是一种方法,test1.isalpha()将返回结果TrueFalse。检查时是否始终满足条件方法。而另一个取决于结果。

看看这种不确定性。

In [13]: if test1.isalpha:
    print 'test'
else:
    print 'in else'
   ....:     
test

In [14]: if test1.isalpha():
    print 'test'
else:
    print 'in else'
   ....:     
in else

答案 2 :(得分:0)

这样的事情怎么样?

  • len(test1)==9确保长度为9
  • hasNumbers(inputString)函数返回字符串
  • 中任意数字的char.isdigit()
  • re.match("^[A-Za-z0-9]*$", test1)使用python re / regular expression
  • 确保只有字母和数字

import re test1 = 'abcd12345' def hasNumbers(inputString): return any(char.isdigit() for char in inputString) if re.match("^[A-Za-z0-9]*$", test1) and hasNumbers(test1) and len(test1) == 9: print('Huzzah!')