(编者) 我试图通过将之前的金额保存到文件来制作存钱罐,这样您就可以获得以前有多少钱。但是,它给了我一个错误(见标题)。请不要将此标记为重复,因为我已经检查了其他人,他们不会解决我的问题。这是我的代码:
def piggybank():
newamount = 0.0
file = open('piggybank.txt','r+')
addedmoney = input('How much money are you adding?')
file.write(addedmoney + '\n')
for line in file:
newamount += line
print("You now have:\n", newamount)
基本上我说新数量是0.然后我在读写模式下打开我的文件并询问用户想要添加多少。然后我将它添加到我的文件中的新行并添加文件中的所有内容。最后,我打印总和。但是,这不起作用,因为我不断收到错误。请帮助!
(我在Python和Stack Overflow上都是一个菜鸟,因为我13岁才开始学习。)
这是我的新代码:
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()
如果你查看我的原始代码,我在钱上添加了换行符,我也在这里做了。然而,它增加了金钱字符串,好像它们是字符串所以它给出了' 5.005.00'如果你两次输入5.00。如果你想打印数字而不是字符串,有谁知道如何添加新行?
答案 0 :(得分:2)
这是因为你的行是字符串而newamount是数字。这就是你得到错误的原因。在进行数学计算之前,必须先将字符串转换为数字。
def piggybank():
newamount = 0.0
file = open('piggybank.txt', 'r+')
addedmoney = input('How much money are you adding?')
file.write(str(addedmoney) + '\n')
file.seek(0)
for line in file:
newamount += float(line)
print("You now have:\n", newamount)
答案 1 :(得分:0)
def piggybank():
newamount = 0.0 # newamount is a floating point number
file = open('piggybank.txt','r+')
addedmoney = input('How much money are you adding?')
file.write(addedmoney + '\n')
for line in file: # line is a string
newamount += line # you are trying to add a floating point number to a string, so the error (I assume) happens here.
print("You now have:\n", newamount)
总之,操作数不匹配。首先,您必须将字符串转换为浮点数,如下所示:
newamount += float(line.strip()) # strip removes trailing whitespace
另一方面,如果您只需要存储总数,为什么要将addedmoney
写入文件?您可以先尝试计算newamount,然后继续写下结果。