2017-10-26 31 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

'योग (फ्लोट, s.split())) ऐसा लगता है कि ऐसा करना चाहिए। –

उत्तर

2

आपको ऐसा करना है, आप फ्लोट करने के लिए पूरी स्ट्रिंग जोड़ने की कोशिश कर रहे हैं। इसके बजाय आपको उन्हें विभाजित करना होगा और उन्हें

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

यह पूरी स्ट्रिंग को फ़्लोट करने के लिए नहीं जोड़ रहा है, यह स्ट्रिंग के सभी वर्ण जोड़ रहा है। –

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

@ जीन-फ्रैंकोइसफैबर आपको इंगित करने के लिए धन्यवाद। कृपया मेरा हालिया संपादन देखें। – Ajax1234

+0

नकारात्मक संख्याओं के बारे में क्या? एक्सपोनेंट (नोट: आप स्ट्रिंग से केवल वैध फ़्लोट निकालने का प्रयास करके प्रश्न का अधिक जवाब दे रहे हैं: यह लड़ाई गुम हो गई है :)) –

4

आप हर चरित्र की पर पुनरावृत्ति कर रहे हैं डोर। यह पहले (ठीक है, 1 ...) के लिए काम करता है, लेकिन जब आप . तक पहुंचते हैं तो आपको एक पार्स त्रुटि मिलती है।

अब, आपको अपनी स्ट्रिंग को विभाजित करने की आवश्यकता है। और पाइथोनिक बनें, इसे एक पंक्ति में करें:

totalsum = sum(map(float,s.split()))