我编写了将参数中的字符串转换为数字的函数。如果字符串不包含数字,则循环中断并打印带有数字的新变量。 如果参数是" 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
答案 0 :(得分:1)
我修改了你的代码:
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'
的注意
返回类型为字符串,您可以在任意位置使用float()
函数:)
答案 1 :(得分:0)
您需要使用string2
和str
代替float
的字符串。
您需要string2 = ""
和string2 += c
。 (您无需在str
上拨打c
,因为它已经是一个字符串。)
答案 2 :(得分:0)
您可以将转换保留为Python的数字(使用int()
,而不是float()
;您只需过滤数字),并且只担心过滤:
def try_parse(string):
digits = []
for c in string:
if c.isdigit():
digits.append(c)
return int(''.join(digits))
但是如果你真的想自己建一个数字,你需要考虑到数字不仅仅是它们的面值。 1
中的123
不具有值1。它的值为100.
建立你的号码最简单的方法是在你添加下一个数字之前将到目前为止的数字乘以10。这样1
保持1
,12
以[{1}}开头,然后在添加1
等时变为10
:
2