不支持的Opperand类型错误

时间:2017-02-07 03:51:25

标签: python file error-handling

(编者) 我试图通过将之前的金额保存到文件来制作存钱罐,这样您就可以获得以前有多少钱。但是,它给了我一个错误(见标题)。请不要将此标记为重复,因为我已经检查了其他人,他们不会解决我的问题。这是我的代码:

 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。如果你想打印数字而不是字符串,有谁知道如何添加新行?

2 个答案:

答案 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,然后继续写下结果。