2017-02-08 17 views
1

Это может показаться дубликатом, но другие не применяются. Поэтому я пытаюсь создать копилку, но я не могу понять, как добавить новую строку, пока я использую числа. Прямо сейчас я использую строки, потому что это единственный способ добавить новую строку. Однако, когда я добавляю два числа, он добавляет их как строку. Например, если вы дважды ввели 5.93. Он напечатает «5.935.93». Итак, я должен преобразовать его в строку, но тогда я не смогу добавить новую строку. Вот мой код:Добавить числа и строки в python

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() 

В третьей строке я могу заработать деньги с плавающей точкой, а затем в четвертой строке я не смог бы добавить новую строку. Может ли кто-нибудь помочь?

ответ

3

Вы можете сохранить money как Integer, но при записи используйте %s. Кроме того, если вы хотите записать в файл, что вам нужно сделать новый набор переменных для open('piggybank.txt', 'wb') для записи в файл .:

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

Я хотел бы добавить, что предпочтительная строка substituion теперь 'String.Format()', но, возможно, еще более простой метод будет 'печать (деньги, файл = файл)' –

+0

Ну с гб вы не может писать. Это для чтения двоичных файлов. – PokeBros

+0

Я изменил его на r +, и он все еще не работает. Он не добавляет деньги, но он просто печатает суммы несколько раз. – PokeBros

0

Вы можете сделать это:

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

Вы можете конвертировать плавает, когда вы делаете математику.

float(money) += float(line) 
0
  • Addtion может быть сделан между цифровой objects.You нужно заметить, что input() даст вам str (строки) тип объекта. И вам нужно преобразовать str в float, используя float().
  • По следам и ошибкам я нашел следующие ссылки sol.Refernece doc: 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()