2017-10-26 1 views
5

문자열 안에있는 소수를 추가하고 내가 문자열 spython3는 : 나는 초보자입니다

totalsum=0 
s='1.23 2.4 3.123' 
for a in s: 
    totalsum=totalsum+float(a) 
print (totalsum) 

내부의 소수를 추가 할 수 있지만 어떻게하려고 할 때 그것은

ValueError: could not convert string to float: '.' 

을 말한다 이 세 자리를 어떻게 추가 할 수 있습니까?

+5

'sum (map (float, s.split()))'해야 할 것처럼 보입니다. –

답변

2

이렇게하면 전체 문자열을 플로트에 추가하려고합니다. 대신 그들을 분할하고 추가해야합니다.

totalsum=0 
    s='1.23 2.4 3.123' 
    for a in s.split(): 
     totalsum=totalsum+float(a) 
    print (totalsum) 
+0

전체 문자열을 float에 추가하지 않고 문자열의 모든 문자를 추가합니다. –

2

문자열을 분리해야합니다.

totalsum=0 
s='1.23 2.4 3.123'.split() 
for a in s: 
    totalsum =totalsum + float(a) 
print (totalsum) 

출력 :

6.753 
3

당신이 사용할 수있는 정규 표현식 :

import re 
s='1.23 2.4 -4.3 3.123 56' 
data = sum(map(float, re.findall('(-*\d+\.*\d+)|\b-*\d+\b', s))) 

출력 :

58.453 
+1

은 '1'과 같이 작동하지 않습니다. 점이 없다면 토스트 야. –

+0

@ Jean-FrançoisFabre 그것을 지적 해 주셔서 감사합니다. 최근 편집을 참조하십시오. – Ajax1234

+0

음수는 어떨까요? 지수 (참고 : 문자열에서 유효한 수레 만 추출하려고하면 질문에 답을 얻지 못했습니다.이 전투는 손실됩니다 :)) –

4

당신은 모든 문자의에 반복하고 문자열. 처음에는 잘 작동하지만 (1 ...), .에 도달하면 구문 분석 오류가 발생합니다.

이제 문자열을 분할해야합니다. 그리고 파이썬으로 표현하자면, 한 줄로 표현하십시오.

totalsum = sum(map(float,s.split())) 
관련 문제