如何在python中使用for循环和函数进行字符串输入?

时间:2017-02-08 02:37:55

标签: python string function for-loop

我在创建一个带有字符串参数的函数时遇到了麻烦,只返回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

5 个答案:

答案 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