如何在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