鱼C论坛

 找回密码
 立即注册
楼主: AisakaTaiga

[已解决]向大佬求助,想编个程序算日降水量

[复制链接]
发表于 2020-5-25 11:50:08 | 显示全部楼层
AisakaTaiga 发表于 2020-5-25 11:46
受教了,大佬我这个程序跑出来只有24个值,循环那里应该怎么改呢

前面初始化一个记录行数的参数:
  1. count_num = 0
复制代码

然后在这代码
  1. if plot == 'M1151':
复制代码

下面加个
  1. count_num += 1
复制代码

把第二个 for 改成 :
  1. for i in range(count_num):
复制代码

这样试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-25 11:56:20 | 显示全部楼层
Twilight6 发表于 2020-5-25 11:50
前面初始化一个记录行数的参数:

然后在这代码

对了 订正下 你 第二个for 改成
  1. for i in range(count_num-1):
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-25 12:07:45 | 显示全部楼层
刚刚没去试着跑下,我去跑了下发现看不懂写入的文件是啥,你能说说你要怎么整理写入新txt文件  我在帮你改改看
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-25 12:31:17 | 显示全部楼层
Twilight6 发表于 2020-5-25 12:07
刚刚没去试着跑下,我去跑了下发现看不懂写入的文件是啥,你能说说你要怎么整理写入新txt文件  我在帮你改 ...

嗯嗯,想写成一个类似原文件类型的txt,只是把小时那一列不要变成日降水,类似这种:
区站号       年份       月份        日期       降水(mm)
M1151        2010          1               1           0.0
M1151        2010          1                2           1.0
M1151        2010          1                3           1.3

但是我编的时候不知道怎么输出成这样的,程序里面就只输出了日降水量,就是最后一行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-25 12:53:17 | 显示全部楼层
AisakaTaiga 发表于 2020-5-25 12:31
嗯嗯,想写成一个类似原文件类型的txt,只是把小时那一列不要变成日降水,类似这种:
区站号       年份 ...

是怎么计算降水的?还有 定时自记降水(mm)也不要了是吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-25 13:30:36 | 显示全部楼层
Twilight6 发表于 2020-5-25 12:53
是怎么计算降水的?还有 定时自记降水(mm)也不要了是吗?

定时自记降水就是小时的降水,计算降水就是把一天24h的加起来~
InkedQQ图片20200525110839_LI.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-25 13:31:19 | 显示全部楼层
AisakaTaiga 发表于 2020-5-25 13:30
定时自记降水就是小时的降水,计算降水就是把一天24h的加起来~

原来如此 骚等、
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-25 13:54:25 | 显示全部楼层

要的~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-25 13:54:51 | 显示全部楼层

四川的噻?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-25 14:25:10 | 显示全部楼层    本楼为最佳答案   
试试看效果是不是你想要的那种
  1. f = open('逐小时降水.txt',encoding='utf-8')
  2. data = []
  3. number = 0

  4. for each_line in f:
  5.     temp = []
  6.     if each_line[:3] != "区站号":
  7.         (plot, year, mouth, day, time, num) = [i for i in each_line.split(' ') if i!='']
  8.         if plot == 'M1151':
  9.             temp.append(year)
  10.             temp.append(mouth)
  11.             temp.append(day)
  12.             temp.append(time)
  13.             if num == '/' or num == '/\n':
  14.                 num = 0.0
  15.             temp.append(float(num))
  16.             data.append(tuple(temp))
  17. # print(data)
  18. new_data = []
  19. for i in range(len(data)-1):
  20.     if data[i][0] == data[i+1][0] and data[i][1] == data[i+1][1] and  data[i][2] == data[i+1][2]:
  21.         number += data[i][4]
  22.         continue
  23.     number += (data[i][4] + data[i+1][4])
  24.     new_data.append((data[i][0:3] + tuple((str(number),'')))[:-1])
  25.     number = 0


  26. file_name = '日降水量' + '.txt'
  27. tp_file = open(file_name, 'w',encoding='utf-8')
  28. tp_file.write('{:^6}{:^6}{:^6}{:^10}\n'.format('年份','月份','日期','日降水量(mm)'))
  29. for i in range(len(new_data)):
  30.     tp_file.write('{:^8}{:^8}{:^8}{:^10.2f}\n'.format(new_data[i][0],new_data[i][1],new_data[i][2],float(new_data[i][3])))

  31. tp_file.close()
  32. f.close()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-25 15:56:17 | 显示全部楼层
Twilight6 发表于 2020-5-25 14:25
试试看效果是不是你想要的那种

运行了一下,报错了下面的语句,是什么原因呀  
for each_line in f:
  File "E:\python\lib\codecs.py", line 322, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc7 in position 0: invalid continuation byte
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-25 15:57:36 | 显示全部楼层
AisakaTaiga 发表于 2020-5-25 15:56
运行了一下,报错了下面的语句,是什么原因呀  
for each_line in f:
  File "E:\python\lib ...
  1. tp_file = open(file_name, 'w',encoding='utf-8')
复制代码
  1. f = open('逐小时降水.txt',encoding='utf-8')
复制代码
把 encoding='utf-8' 删了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-25 16:01:34 | 显示全部楼层
Twilight6 发表于 2020-5-25 15:57
把 encoding='utf-8' 删了

删了以后出现了这个问题~

(plot, year, mouth, day, time, num) = [i for i in each_line.split(' ') if i!='']
ValueError: not enough values to unpack (expected 6, got 1)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-25 16:03:51 | 显示全部楼层
AisakaTaiga 发表于 2020-5-25 16:01
删了以后出现了这个问题~

(plot, year, mouth, day, time, num) =

你的txt 文本 是不是有些地方没按规律...   
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-25 16:04:24 | 显示全部楼层
AisakaTaiga 发表于 2020-5-25 16:01
删了以后出现了这个问题~

(plot, year, mouth, day, time, num) =

我用你给我的数据已经可以正常运行了 你可以试试你把你给我的数据拿去试着运行下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-25 16:05:19 | 显示全部楼层
Twilight6 发表于 2020-5-25 16:03
你的txt 文本 是不是有些地方没按规律...

我检查一下~ 谢谢大佬帮助!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-25 16:50:54 | 显示全部楼层
Twilight6 发表于 2020-5-25 16:04
我用你给我的数据已经可以正常运行了 你可以试试你把你给我的数据拿去试着运行下

大佬,我用给你的数据运行仍然是这个问题,不知道是因为什么,百度了一下说是什么换行符的问题,可是我把换行符替换了以后就不能运行出我想要的数据了。求解答
问题如下:
(plot, year, mouth, day, time, num) = [i for i in each_line.split(' ') if i!='']
ValueError: not enough values to unpack (expected 6, got 1)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-25 16:55:13 | 显示全部楼层
AisakaTaiga 发表于 2020-5-25 16:50
大佬,我用给你的数据运行仍然是这个问题,不知道是因为什么,百度了一下说是什么换行符的问题,可是我把 ...

哦哦 那我知道了 你文本里面是有空行的原因才导致报错,if条件过滤下空行的即可

  1. if each_line[:3] != "区站号" and each_line != "\n":
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-25 17:51:23 | 显示全部楼层
Twilight6 发表于 2020-5-25 16:55
哦哦 那我知道了 你文本里面是有空行的原因才导致报错,if条件过滤下空行的即可

仍然是这个问题,我试了我给你的样本和原始数据都是这个问题
捕获.PNG
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-25 17:59:54 | 显示全部楼层
AisakaTaiga 发表于 2020-5-25 17:51
仍然是这个问题,我试了我给你的样本和原始数据都是这个问题


那在if 前面一行加个
each_line.strip() 试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-30 03:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表