如何学习字符串中是否有数字

How to learn is there a numbers in string

我的任务是创建一个函数,returns如果 word 中有数字 (0-9) 则为 True,如果 word 中没有数字则为 False:

def has_digits(string):
    for r in range (0,10)
    if r in string:
        return 'True'
    else: return 'False'

print(has_digits('Python3'))

通常我会收到以下错误消息:

TypeError: 'in <string>' requires string as left operand, not int
def has_digits(string):
    return any(char.isdigit() for char in string)

print(has_digits('abc1'))

您的示例应该像这样才能工作:

def has_digits(string):
    b = False
    for r in range(0, 10):
        if str(r) in string:
            b = True
    return b


print(has_digits('Python3'))

您应该已经解析了 str(r),其次您的函数将检查 0 是否在您的字符串中,并立即检查 return false。对于循环中的其余值,不会 运行。

改变这个:

if r in string:

对此:

if str(r) in string:

您必须将 int 对象从 for 循环转换为 str 对象,因为 if a in b 仅适用于 ab 作为字符串 (str) 对象。你必须从循环中删除一个 return 。否则方法 isDigit 将在字符串的第一个字母处以 truefalse 结尾。

def has_digits(string):
    for r in range(0, 10):
        if str(r) in string:
            return true

    return false

print(has_digits("Python3"))

>> true

现在,如果您的字符串包含数字,该方法将 return true。否则它将进一步循环遍历字符串并检查下一个字母。最后方法 returns false 因为字符串结束并且方法不 return 与循环中的 true

这段代码现在如何工作?
假设您将字符串 Python3 传递给方法 has_digits,然后第一个 for 循环迭代数字 09。所以在第一个循环中 r 等于 0。现在条件检查 if str(r) in string 将发生。 if 语句检查 str(0)"0" 数字 0 的字符串版本)是否在字符串 string 中(这是您的 Python3 ).里面没有"0",所以条件是falsefor循环继续1。整个过程重复直到 3。对于 3 if 语句 returns true,因为 "3"Python3 中,现在该方法将 return true 这表示您的字符串 至少 一位数字。

出现此错误是因为您正在将字符串与整数进行比较。 将 r in string 更改为 str(r) in string 将解决此错误。

def has_digits(string):
    for r in range (0,10):
        if str(r) in string:
            return 'True'    
    return 'False'

print(has_digits('Python3'))

嗯,您的代码中有一个错误。

def has_digits(string):
    for r in range (0,10)  # here; should have a :(colon) at the end
    if r in string:
        return 'True'
    else: return 'False'

print(has_digits('Python3'))

正确的代码应该是:

def has_digits(string):
    for r in range(10):
        r = str(r)
        if r in string:
            return True
    return False

print(has_digits('Python3'))

错误的原因是您正在检查字符串中的整数值。所以改变

if r in string

if str(r) in string

此外,循环内不需要 else,因为如果第一个字符不是数字,它将 return 为 false,因此您不会得到正确答案,您可以将其更改为类似

def has_digits(string):
    for r in range (0,10):
         if str(r) in string:
             return 'True' # use boolean return for better use
    return false

虽然这是正确的方法,您会得到结果,但要了解列表理解和生成器。您将更快、更好地获得结果。