Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中使用for循环和字符串输入函数?_Python_String_Function_For Loop - Fatal编程技术网

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

如何在python中使用for循环和字符串输入函数?,python,string,function,for-loop,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='') 它应该打印:16

我在创建一个函数时遇到了问题,该函数接受字符串的参数,并且只返回类型
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

您可以这样做:

def check_if_number(number_string):
    num = ""
    for ix in number_string :
        if ix.isdigit():
            num += ix
    return int(num)

如果输入为1655t,此函数将返回1655。扫描完整字符串并将所有
int
附加到字符串后,即可从函数返回。

如果字符串是数字,则应将每个字符添加到字符串中:

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
请注意,您还可以使用:

此代码将每个非数字字符(由
\D
匹配)替换为空字符串


如果所有数字都在一起(即“1e234g7”等数字之间不存在字母),请查看以找到更多的方法来执行此操作

这将返回一个只包含数字的字符串。如果要返回类型
int
,只需执行
返回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='')
类似地,这将返回一个字符串。如果您想要键入
浮点值
,只需执行
返回浮点值(num)


我尽量不偏离你已经拥有的东西太多。。。我希望这会有所帮助。

简单的方法是使用
过滤器
并将过滤后的字母连接在一起:

def check_if_number(number_string):
    return ''.join(filter(str.isdigit, number_string))

我不确定什么是
check\u leap\u year()
函数,所以我只是注释了它,并调用了您提供的函数

当您将任何内容传递到函数中以便对其进行操作并将其吐出时,您应该为更改的数据集创建一个新变量

在本例中,我使用了
num=”“

通过在函数内部启动一个空字符串,我现在可以将传递条件的数据添加到新的空字符串中

isdigit()
返回布尔值。因此,与其使用
if x.isdigit:
不如养成检查布尔值的习惯。如果x.isdigit()为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

什么是
检查闰年
功能?还有,您得到的确切错误是什么?它是check_if_编号。很抱歉给你带来了困惑。我得到了TypeError:字符串索引必须是整数。当我运行代码时,不要在for循环内返回,而是在末尾返回。您还需要添加一个结果变量,因为
num
只是一个字符,
ch
仍然是一个字符串,您需要在检查后将其转换为
int
,因为您无法使用它进行索引。你是想删除所有非数字字符,还是只是检查数字不是唯一的数字?你能告诉我你的代码是什么意思吗?这里有很多矛盾的东西,如果你能解释一下你希望每个语句都做些什么,那就太好了,这样我们就可以真正帮助你解决这个问题,而不仅仅是说Python知识。为什么你只需要访问元素就可以在一个范围内迭代呢?直接迭代字符串!我不能只使用ch.isdigit():还是必须包含数字字符串[ch]?此外,视觉帮助很多,谢谢!我是python新手。然后你将索引命名为
ch
,这让人非常困惑。对于一个显然是初学者的人来说,这让人非常困惑。
ch
是字符串中的一个字符,因此,您不能将其用于索引。@StevenSummers一开始我没有领会它,lol我试图尽快进行编辑,但今天地铁速度非常慢:/我看到了我做错的两件事。没有要添加的结果变量(如digit_字符串)并将返回置于循环之外。这让我大开眼界。@KBdoesCode太棒了!如果这解决了你的问题并回答了你的问题,你就可以接受答案(问题左边的勾号)。这是一个知识渊博的地方。谢谢那么,编写ch.isdigit()背后的原因是什么呢?如果ch.isdigit()对这个循环也起作用?那部分让我有点困惑。我被告知在编写代码时不要重复我自己,主要是一致性和可读性。您还可以使用
isdigit()
确定某个内容是否不是数字。在这种情况下,您需要使用
is
操作数
如果x.isdigit()为False:
一个好的经验法则是,如果你有时需要它,但当你不需要它时,它会给你同样的结果,只要养成这样做的习惯就行了。如果将来有人阅读你的代码,他们会感谢你
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