2017-02-08 4 views
1

Dies mag wie ein Duplikat erscheinen, aber die anderen gelten nicht. Also versuche ich ein Sparschwein zu machen, aber ich kann nicht herausfinden, wie ich eine neue Zeile hinzufügen kann, während ich Nummern verwende. Im Moment benutze ich Strings, weil nur so eine neue Zeile hinzugefügt werden kann. Wenn ich jedoch die zwei Zahlen addiere, fügt sie sie wie eine Zeichenfolge hinzu. Zum Beispiel, wenn Sie zweimal 5.93 eingegeben haben. Es würde "5.935.93" drucken. Also, ich muss es in eine Zeichenfolge konvertieren, aber dann kann ich keine neue Zeile hinzufügen. Hier ist mein Code:Fügen Sie Zahlen und Zeichenfolgen in Python hinzu

def piggybank(): 
    file = open('piggybank.txt','r+') 
    money = input('How much money are you adding?') 
    file.write(money + '\n') 
    for line in file: 
     money += line 
    print("You now have:\n", money) 
    file.close() 

In der dritten Zeile ich Geld ein Schwimmer machen könnte, aber dann in der vierten Zeile würde ich nicht eine neue Zeile hinzufügen können. Kann jemand helfen?

Antwort

3

Sie könnten money als Integer behalten, aber beim Schreiben verwenden Sie %s. Auch, wenn Sie in eine Datei schreiben möchten, müssen Sie eine neue Variable auf open('piggybank.txt', 'wb') machen, schreiben diese in die Datei .:

def piggybank(): 
    filew = open('piggybank.txt','wb') 
    file = open('piggybank.txt','rb') 
    money = input('How much money are you adding?') 
    filew.write('%s\n' % money) 
    for line in file: 
     money += line 
    print("You now have:\n%s" % money) 
    filew.close() 
    file.close() 
+0

Ich möchte hinzufügen, dass die bevorzugte String substituion jetzt ist 'string.format()', aber vielleicht eine noch einfachere Methode wäre 'Druck (Geld, file = Datei)' –

+0

Well mit rb Sie kann nicht schreiben. Das ist zum Lesen binär. – PokeBros

+0

Ich änderte es in r + und es funktioniert immer noch nicht. Es fügt das Geld nicht hinzu, aber es druckt nur die Beträge mehrfach. – PokeBros

0

Sie tun können:

def piggybank(): 
    file = open('piggybank.txt','rb') 
    money = input('How much money are you adding?') 
    file.write(str(money) + "\n") 
    for line in file: 
     money += float(line.strip()) 
    print("You now have:\n" + str(money)) 
    file.close() 
0

Sie konvertieren schweben, wenn Sie die Mathematik tun.

float(money) += float(line) 
0
  • addtion zwischen numerischen objects.You getan werden könnte, müssen feststellen, dass input() geben Ihnen einen str (string) Typ-Objekt. Und Sie müssen str zu float mit float() konvertieren.
  • Nach Trail und Fehler, habe ich folgende Lösung gefunden.Refernece doc Links sind strip() doc, open() doc.

    def piggybank(): 
    file = open('piggybank.txt','a') #open file for appending to the end of it. 
    money = input('How much money are you adding? ') 
    file.write(money + '\n') # Write strings to text file. 
    file.close() 
    file = open('piggybank.txt','r') 
    sum = float(0) # initialize sum with zero value. 
    for line in file: 
        sum += float(line.strip('\n')) # srtip '\n' and convert line from str to float. 
    print("You now have: %s" % sum) 
    file.close() 
    
Verwandte Themen