我的任务是在课堂上完成这项任务,(我制作的代码可以检查用户输入的密码是否符合指南)。
这部分需要我检查例如A是否在B中,但我遇到了麻烦。这是代码的一部分,我如何检查输入的密码中是否包含大写字母?对不起,我是python的新手,我正在努力学习新的概念!
我在网上看了但是人们说要放的东西对我来说有点复杂(截至目前)。
def valid_password(pw):
up = 'ABCDEFGHIJKLMNOPQRSTUVWXWY'
if pw in up
return True
答案 0 :(得分:2)
将any
与理解结合使用:
>>> pw1 = "abcd"
>>> pw2 = "abcD"
>>> any(c.isupper() for c in pw1)
False
>>> any(c.isupper() for c in pw2)
True
对于字符串中的每个字符, c.isupper()
评估为True
或False
。语法expr for var in iterable
被称为生成器理解,并且是可迭代的。 any
采用可迭代的方式,并告诉您其元素是否为True
。
鉴于此,您可以构建一个函数:
def valid_password(pw):
return any(c.isupper() for c in pw)
答案 1 :(得分:1)
如果仅检查pw是否有任何大写字符,则此方法应该有效。
import re
def valid_password(pw):
pattern = re.compile(r'[A-Z]')
if pattern.findall(pw):
return True
else:
return False
答案 2 :(得分:0)
if pw in up
在您当前的上下文中没有意义,因为从概念上讲,您正在检查是否在pw
中找到整个密码字符串up
作为子字符串。您要检查的是pw
中找到的任何字符是否在up
。
def valid_password(pw):
up = 'ABCDEFGHIJKLMNOPQRSTUVWXWY'
for letter in pw:
if letter in up:
return True
或者内置'isupper'
def valid_password(pw):
for letter in pw:
if letter.isupper():
return True
答案 3 :(得分:0)
让我们不要忘记string
模块的奇迹:
import string
def valid_password(pw):
return any(c in string.ascii_uppercase for c in pw)
这几乎已经是英语了,但这会检查any
c
个字符in
p
屁{1}} ord是w
大写字母(in
)的集合,如果有,则返回string.ascii_uppercase
,否则返回True
。
答案 4 :(得分:0)
对于这种情况,最佳答案是正则表达式向前看和向后看。 例如,我需要使用以下条件来验证密码。
def valid_password(password): import re exp = r'(?=[A-Z]{1,}).*' match = re.search(exp, password) if match.group() : return True else: return False print(valid_password("A1ybhcdhhj"))