我有这两个程序:
def calculate1():
a4canon = (int(input('A4 paper (canon):')))*8.9
a4rainbow = (int(input('A4 paper (rainbow):')))*7.5
lruler = (int(input('Long ruler:')))*0.85
sruler = (int(input('Short ruler:')))*0.55
blue = (int(input('Blue pen:')))*0.65
red = (int(input('Red pen:')))*0.65
black = (int(input('Black pen:')))*0.65
pencil = (int(input('2B Pencil:')))*2.4
total = a4canon + a4rainbow + lruler + sruler + blue + red + black + pencil
a4canon1 = str(a4canon)
a4rainbow1 = str(a4rainbow)
lruler1 = str(lruler)
sruler1 = str(sruler)
blue1 = str(blue)
red1 = str(red)
black1 = str(black)
pencil1 = str(pencil)
total1 = str(total)
return('A4 paper (canon):',a4canon1)
return('A4 paper (rainbow):',a4rainbow1)
return('Long ruler :',lruler1)
return('Short ruler:',sruler1)
return('Blue pen:',blue1)
return('Red pen:',red1)
return('Black pen:',black1)
return('Pencil:',pencil1)
return('Total:',total1)
和另一个:
import calculate
def display1():
file = open('sample.txt','w')
file.write(calculate.calculate1())
display1()
问题是它打印:
TypeError: write() argument must be str, not tuple
尽管我已将值更改为字符串,但我是否遗漏了什么,因为我希望将其保存到文本文件中,如下所示:
A4 paper(canon):1 ~ 8.9
A4 paper(rainbow):1 ~ 7.5
Long ruler:1 ~ 0.85
Short ruler:1 ~ 0.55
Blue pen:1 ~ 0.65
red pen:1 ~ 0.65
Black pen:1 ~ 0.65
2B pencil:1~ 2.4
Total:22.149999999999995
请帮助和建议。谢谢
似乎当我使用:
file.write(str(calculate.calculate1()))
它只保存:
('A4 paper (canon):', 8.9)
文件写入只会接受字符串,这就是您收到错误的原因。所以当你回来的时候你可以这样回来
return("A4 paper (canon):" + str(a4canon1))
这将返回一个字符串,您可以将其用于 file.write
或者在使用返回值时,您可以将其转换为字符串
file.write(str(calculate.calculate1()))
同样在您的定义中,您有多个 return 语句。在第一个 return 语句之后不会执行任何操作。删除所有 return 语句并返回字符串列表而不是返回多个字符串
return[('A4 paper (canon):',a4canon1),('A4 paper (rainbow):',a4rainbow1),('Long ruler :',lruler1),('Short ruler:',sruler1),('Blue pen:',blue1),('Red pen:',red1),('Black pen:',black1),('Pencil:',pencil1),('Total:',total1)]
并且在捕获这样的返回值更改时
import calculate
def display1():
file = open('sample.txt','w')
lst=calculate.calculate1()
for i in lst:
file.write(" ".join(list(i)))
display1()
而且也不建议在函数定义中进行输入。您可能需要对其进行返工
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句