我如何检查' a'在' b'?需要帮助

时间:2016-10-28 20:44:28

标签: python

我的任务是在课堂上完成这项任务,(我制作的代码可以检查用户输入的密码是否符合指南)。

这部分需要我检查例如A是否在B中,但我遇到了麻烦。这是代码的一部分,我如何检查输入的密码中是否包含大写字母?对不起,我是python的新手,我正在努力学习新的概念!

我在网上看了但是人们说要放的东西对我来说有点复杂(截至目前)。

def valid_password(pw):
    up = 'ABCDEFGHIJKLMNOPQRSTUVWXWY'
    if pw in up
      return True  

5 个答案:

答案 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()评估为TrueFalse。语法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)

对于这种情况,最佳答案是正则表达式向前看和向后看。 例如,我需要使用以下条件来验证密码。

  1. 密码必须至少包含1个大写字母。 这是代码
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"))

来源:https://www.rexegg.com/regex-lookarounds.html