# 编程计算水费
import plotly as py
from plotly import figure_factory as FF
import plotly.graph_objs as pygo
import pandas as pd
import numpy as np
import csv
# 写一个txt文件
f1 = open(r"water.txt","w",encoding="utf-8")
data = "账号 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月\n\
0000359333 772 789 806 847 880 901 950 991 1022 1043 1064 1089 1114\n\
0000359305 121 132 145 156 168 179 192 206 219 230 246 258 273\n\
0000359708 1008 1046 1102 1167 1209 1255 1311 1362 1407 1453 1512 1563 1604\n\
0000359504 541 567 590 622 651 689 701 732 758 775 796 814 847\n\
0000359209 401 412 441 466 479 490 508 522 541 572 603 637 666"
f1.write(data)
# 计算txt文件数据
f2=open("water.txt","r")
head=f2.readline()
sum=0
for line in f2.readlines():
l=line.split()
for i in range(len(l)/2):
s=int(l[i*2+1])+int(l[i*2+2])*1.05
sum+=s
print(sum)
# 将txt文件转为csv文件
data_txt = np.loadtxt('water.txt')
data_txtDF = pd.DataFrame(data_txt)
data_txtDF.to_csv('water.csv',index=False)
#绘制折线图
pyplt = py.offline.plot #离线模式
data = pd.read_csv("water.csv",encoding="GBK")
table = FF.create_table(data)
data["水费"]=sum
xdata = data["账号"].tolist() # 取账户这一列,做列表
ydata = data["水费"].tolist() # 取水费这一列,做列表
trace = pygo.Scatter(x=xdata,y=ydata,name="水费") # 水费折线
money = pygo.data(trace)
layout = pygo.Layout(title="用户一年的水费") #图的标题
money= pygo.Figure(data=money,layout=layout)
print(money)
#关闭文件
f1.close()
f2.close()
创建水量文件“water.txt”文件,其内容第一列为账号,后面是每个月的用水量(后一个数-前一个数),共十二个月。每立方米需付1.05元。 编程计算每户一年的水费,并画出折线图。
0000359333 772 789 806 847 880 901 950 991 1022 1043 1064 1089 1114
0000359305 121 132 145 156 168 179 192 206 219 230 246 258 273
0000359708 1008 1046 1102 1167 1209 1255 1311 1362 1407 1453 1512 1563 1604
0000359504 541 567 590 622 651 689 701 732 758 775 796 814 847
0000359209 401 412 441 466 479 490 508 522 541 572 603 637 666。
老师,这道题我是先写一个txt文件,然后计算txt文件中的数据,后转成表格形式的csv文件,再用csv文件绘制折线图。因为这是昨天晚上写的,那个时候提问老师也下班了,而且掌握的不熟练,程序不长所以我就没有写一下运行一下。报的错误为:
txt文件可以正常输出,但txt文件计算数据时为0,接下来的步骤全是按照平常课程老师举的例子来写的。麻烦老师花点时间看看题目教教我,求教,谢谢!