不支持的Opperand类型E

2024-09-30 01:21:18 发布

您现在位置:Python中文网/ 问答频道 /正文

(已编辑) 我试图通过保存以前的钱数额到一个文件,使你可以访问多少钱,你以前有一个小猪罐。但是,它给了我一个错误(见标题)。请不要标记为重复,因为我已经检查了其他人,他们不苹果我的问题。这是我的密码:

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

如果你看一下我原来的代码,我给money添加了一个新行,我在这里也这么做了。但是,它添加了money字符串,就好像它们是字符串一样,因此如果您输入5.00两次,就会得到“5.005.00”。如果你想打印数字而不是字符串,有人知道如何添加新行吗?你知道吗


Tags: 文件字符串txtinputdef错误lineopen
2条回答

因为你的行是string,newamount是number。所以你才会出错。在进行数学计算之前,必须先将字符串转换为数字。你知道吗

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)
 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,然后继续写入结果。你知道吗

相关问题 更多 >

    热门问题