在每次运行python循环时将数字保存到变量中

2024-03-29 06:38:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了将参数中的字符串转换为数字的函数。如果字符串不包含数字,则循环中断,并打印带有数字的新变量。 如果参数为“123”,则函数返回6。我不想返回总和,只是把每个数字排成一行。我如何完成结果123?我不知道!我不知道用什么来代替string2+=float(c)。你知道吗

def try_parse(string):
 string2=0
 for c in string:
  if c.isdigit() == True: 
   string2 += float(c)
  else:
    break 
 return string2

Tags: 函数字符串infor参数stringifparse
3条回答

我修改了你的代码:

def try_parse(string):
    string2 = ""
    for c in string:
        if not c.isdigit() and c != '.':
            break
        string2 += c
    return string2

您可以看到,现在我使用string2作为字符串,而不是int(当在int上使用+符号时,您可以求和,对于字符串,+用于连接)。你知道吗

此外,我还使用了更可读的if条件。你知道吗


更新:

现在条件是忽略'.'。你知道吗

测试:

>>> try_parse('123')
'123'
>>> try_parse('12n3')
'12'
>>> try_parse('')
''
>>> try_parse('4.13n3')
'4.13'


注意

返回类型是string您可以在任何地方使用^{}函数:)

您可以将数字的转换留给Python(使用int(),而不是float();只过滤数字),只需担心过滤:

def try_parse(string):
    digits = []
    for c in string:
        if c.isdigit():
            digits.append(c)
    return int(''.join(digits))

但是如果你真的想自己建立一个数字,你需要考虑到数字不仅仅是它们的面值。^123中的{}没有1的值。它的值为100。你知道吗

建立数字的最简单方法是将你目前的数字乘以10,然后再加上下一个数字。这样1保持1121开始,然后在添加2时变为10,等等:

def try_parse(string):
    result = 0
    for c in string:
        if c.isdigit():
            result = result * 10 + int(c)
    return result

您需要为string2str而不是float使用字符串。你知道吗

你想要string2 = "",和string2 += c。(您不需要在c上调用str,因为它已经是一个字符串了。)

相关问题 更多 >