我在创建一个带有字符串参数的函数时遇到了麻烦,只返回str
类型的数字。我的代码看起来像这样。:
def check_if_number(number_string):
for ch in number_string:
if ch.isdigit():
num = number_string[ch]
return num
print(check_if_number('1655t'), end='')
应该打印:1655
答案 0 :(得分:1)
如果是字符串,则应将每个字符添加到字符串中:
def check_if_number(number_string):
digit_string = ""
for ch in number_string:
if ch.isdigit():
digit_string += ch
return digit_string
print(check_if_number('1655t'))
# 1655
请注意,您也可以使用re library:
import re
re.sub("\D", "", "1655t")
#1655
此代码用空字符串替换每个非数字字符(由\D
匹配)。
查看this question以找到更多方法
答案 1 :(得分:0)
你可以这样做:
def check_if_number(number_string):
num = ""
for ix in number_string :
if ix.isdigit():
num += ix
return int(num)
如果输入为1655t,则此函数将返回1655。扫描完整字符串后,您将从函数返回并将所有ints
附加到字符串。
答案 2 :(得分:0)
假设所有数字都在一起(即“1e234g7”等数字之间不存在字母),
def check_if_number(number_string):
num = ''
for ch in number_string:
if ch.isdigit():
num += ch
return num
print(check_if_number('1655t'), end='')
这将返回一个只包含数字的字符串。如果您想要返回int
类型,那么只需执行return int(num)
。
如果你想考虑花车:
def check_if_number(number_string):
num = ''
for ch in number_string:
if ch == '.' or ch.isdigit():
num += ch
return num
print(check_if_number('1655t'), end='')
同样,这将返回一个字符串。如果您想要float
类型,只需执行return float(num)
。
我尽量不要偏离你已经拥有的东西......我希望这会有所帮助。
答案 3 :(得分:0)
简单的方法就是使用filter
并在最后连接过滤后的字母:
def check_if_number(number_string):
return ''.join(filter(str.isdigit, number_string))
答案 4 :(得分:0)
我不确定check_leap_year()
函数是什么,所以我只是评论它并调用你给我们的函数。
当您将任何内容传递给函数以便操作它并将其吐出来时,它应该为更改的数据集创建一个新变量。
在这种情况下,我使用了num = ""
通过在函数内部启动一个空字符串,我现在可以将传递条件的数据添加到新的空字符串中。
isdigit()
返回一个布尔值。因此,不要使用if x.isdigit:
养成检查布尔值的习惯。请改为if x.isdigit() is True
。
完成后返回完成的新字符串。确保您的return语句正确缩进,或者您只返回一个数字而不是所有数字。返回应该在循环之外,这样它只会在循环完成后返回。
num_string = "1a2s3d4f5g666hhh777jjj888kkk9l0"
def check_if_number(number_string):
num = ""
for ch in number_string:
if ch.isdigit() is True:
num += ch
return num
print(check_if_number(num_string))
输出:
>>> 1234566677788890