如何学习字符串中是否有数字
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
仅适用于 a
和 b
作为字符串 (str
) 对象。你必须从循环中删除一个 return
。否则方法 isDigit
将在字符串的第一个字母处以 true
或 false
结尾。
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
循环迭代数字 0
到 9
。所以在第一个循环中 r
等于 0
。现在条件检查 if str(r) in string
将发生。 if
语句检查 str(0)
("0"
数字 0
的字符串版本)是否在字符串 string
中(这是您的 Python3
).里面没有"0"
,所以条件是false
,for
循环继续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
虽然这是正确的方法,您会得到结果,但要了解列表理解和生成器。您将更快、更好地获得结果。
我的任务是创建一个函数,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
仅适用于 a
和 b
作为字符串 (str
) 对象。你必须从循环中删除一个 return
。否则方法 isDigit
将在字符串的第一个字母处以 true
或 false
结尾。
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
循环迭代数字 0
到 9
。所以在第一个循环中 r
等于 0
。现在条件检查 if str(r) in string
将发生。 if
语句检查 str(0)
("0"
数字 0
的字符串版本)是否在字符串 string
中(这是您的 Python3
).里面没有"0"
,所以条件是false
,for
循环继续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
虽然这是正确的方法,您会得到结果,但要了解列表理解和生成器。您将更快、更好地获得结果。