python 中给定字符串中的一组数字

Given set of numbers in a string in python

我想检查字符串中是否存在一组数字

这是我的代码:

def check_no(string):
    string = string.lower()
    no = set(c)

    s = set()
    for i in string:
        if i in no:
            s.add(i)
        else:
            pass

    if len(s) == len(no):
        return("Valid")
    else:
        return("Not Valid")

c = input()
print(check_no(c))

如果字符串中存在给定的数字集,则打印 Valid,如果不存在,则打印 Not valid

当输入为 123 且字符串类似于 I have 12 car and 3 bikes 时,程序运行正常,然后输出有效

但是当我将输入作为 254 并将字符串作为 i hav25555number 时,输出为 valid 但实际输出应为 Not valid 作为 4字符串中不存在。

任何人都可以帮助如何在提供的代码中解决它

我想检查所有字符是否匹配然后使用 all

def check_no(text, check):
    valid =  all(character in text for character in check)
    if valid:
        return("Valid")
    else:
        return("Not Valid")

check = '254'
text = 'i hav25555number'
print(check_no(text, check))

单行版

def check_no(text, check):
    return 'Valid' if all(character in text for character in check) else 'Not Valid'

你的函数大部分是正确的,但可能是因为你对变量名的(糟糕的)选择,stringc 变量在环境中混淆了。

解决方案是将参数显式添加到函数定义中(同时避免使用 stringc 之类的名称,因为这些可能是预定义的 python 关键字):

teststring = "254"
testc = "i hav25555number"

def check_no(mystring, myc):
    string = mystring.lower()
    no = set(c)
    print("string is",string)
    s = set()
    for i in string:
        
        if str(i) in no:
#            print(i, " in ", no)
            s.add(i)
        else:
            pass
#        print("s is",s)
#        print("no is",no)
    if len(s) == len(no):
        return("Valid")
    else:
        return("Not Valid")

print(check_no(teststring,testc))

给出:

print(check_no(teststring,testc))
string is 254
Not Valid

如前所述,您可以使用 all 让您的代码更优雅,尽管您的实现也没有任何问题。