代码仅在字母数字的情况下显示True,但应该在所有情况下都显示True

时间:2019-06-13 08:40:13

标签: python python-3.x string

因此,问题是,当我们输入任何字符串时,对于下面给出的情况,如果输出为True,则输出必须返回True,否则返回False。 情况包括:检查输入的字符串是否为字母数字,字母,数字,小写字母,大写字母。

我尝试将qA2作为输入字符串。

def anum(string):
    if s.isalnum():
        return 'True'
    else:
        return 'False'
def alpha(string):
    if s.isalpha():
        return 'True'
    else:
        return 'False'
def digi(string):
    if s.isdigit():
        return 'True'
    else:
        return "False"
def lcase(string):
    if s.islower():
        return 'True'
    else:
        return 'False'
def ucase(string):
    if s.isupper():
        return 'True'
    else:
        return 'False'

实际输出:true,false,false,false,false.

预期输出:true,true,true,true,true.

2 个答案:

答案 0 :(得分:0)

使用any()运算符和for来检查以上条件对于您的字符串是否有效。

for循环检查字母是否满足strin中的条件并创建生成器。

在您的情况下,行if any(i.isalpha() for i in string)将首先求值(i.isalpha() for i in string)并创建一个生成器(如果将其转换为列表,它将类似于[True, True, False])。

any运算符将检查列表中是否有True值(如果是),则将if条件评估为True

def anum(string):
    if any(i.isalnum() for i in string):
        return 'True'
    else:
        return 'False'
def alpha(string):
    if any(i.isalpha() for i in string):
        return 'True'
    else:
        return 'False'
def digi(string):
    if any(i.isdigit() for i in string):
        return 'True'
    else:
        return "False"
def lcase(string):
    if any(i.islower() for i in string):
        return 'True'
    else:
        return 'False'
def ucase(string):
    if any(i.isupper() for i in string):
        return 'True'
    else:
        return 'False'

答案 1 :(得分:0)

由于它检查整个字符串以确定输入类型,因此它说给定的输入是字母数字

try giving 
s[1].isupper()
output:
true

s[2].isdigit()
output:
true