2021.1.15——星露谷作物计算器的小改进

  • 前言
  • 目标
  • excel表格
  • 代码
  • 总结

前言

2021.1.13做的星露谷作物计算器,初步只完成了对excel表内数据和图表的生成,交互也只是input(),正好2021.1.14初步学习了easygui相关的知识,学以致用,生成一个简单的gui可交互界面,对excel表和代码也进行了部分修改,以适应蔓越莓,蓝莓等一次采摘掉落好几个果子的这种作物的计算

目标

2021.1.13
让用户选择季节,输入当前的天数,然后就可以在excel里查看相应的数据和图表

excel表格

和上次的表格相比,去掉了一些没用的列

代码

#加载相关模块
import xlwings as xw
import matplotlib.pyplot as plt
import pandas as pd
import easygui as gapp = xw.App(visible=False, add_book=False)
file_path = 'd:\\python_study\\xinglugu.xlsx' #定义文件路径
workbook = app.books.open(file_path)
wsh1 = workbook.sheets['spring'] #定义需要用的工作表
wsh2 = workbook.sheets['summer']
wsh3 = workbook.sheets['autumn']
wsh4 = workbook.sheets['special']season = g.buttonbox(msg="目前的季节是?",title="季节",choices=("春","夏","秋")) #生成选项gui
day = g.integerbox(msg="请输入目前的天数",title="天数",lowerbound=1,upperbound=28)#生成输入框guiif season == "春":i = 2     #公式需要循环获得每个单元格的值,定义各个变量,注意此处用f-string方式格式化变量,否则会报错while wsh1.range(f"B{i}").value is not None: #此处意指判定B列值为空时停止循环,注意判定为空值用NoneBi = wsh1.range(f"B{i}").value #定义变量Ci = wsh1.range(f"C{i}").valueFi = wsh1.range(f"F{i}").valueGi = wsh1.range(f"G{i}").valueHi = wsh1.range(f"H{i}").valueif day + int(Gi) > 28:  #用if语句判定如果目前天数加上作物生长需要天数大于28,则收益为0wsh1.range(f"L{i}").value = "0"else:if Hi == None:   #用if语句判定是否为可持续收获作物a = (Ci*Fi-Bi)/Gielse:a = (int(((28-day)-Gi)/Hi+1) *Ci*Fi -Bi)/(28-day)wsh1.range(f"L{i}").value = ai +=1workbook.save()df = pd.read_excel(file_path,sheet_name='spring')  #用pandas读取'spring'工作表的数据figure = plt.figure() #画图plt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = Falsex = df['作物名称'] #以'作物名称'列为x轴y = df['日均收益'] #以'日均收益'列为x轴plt.bar(x,y,color = 'black')#判定当工作表里有图片时删除该图片,否则会导致每次运行程序重新计算添加图片都会多一张,太乱while wsh1.pictures: wsh1.pictures[0].delete() #翻阅xlwings 手册翻到的代码,这块我搜了半天都没找到怎么执行wsh1.pictures.add(figure,left = 500,top = 200)if season == "夏":i = 2        #公式需要循环获得每个单元格的值,定义各个变量,注意此处用f-string方式格式化变量,否则会报错while wsh2.range(f"B{i}").value is not None: #此处意指判定B列值为空时停止循环,注意判定为空值用NoneBi = wsh2.range(f"B{i}").value #定义变量Ci = wsh2.range(f"C{i}").valueFi = wsh2.range(f"F{i}").valueGi = wsh2.range(f"G{i}").valueHi = wsh2.range(f"H{i}").valueif day + int(Gi) > 28:  #用if语句判定如果目前天数加上作物生长需要天数大于28,则收益为0wsh2.range(f"L{i}").value = "0"else:if Hi == None:   #用if语句判定是否为可持续收获作物a = (Ci*Fi-Bi)/Gielse:a = (int(((28-day)-Gi)/Hi+1) *Ci*Fi -Bi)/(28-day)wsh2.range(f"L{i}").value = ai +=1workbook.save()df = pd.read_excel(file_path,sheet_name='summer')  #用pandas读取'spring'工作表的数据figure = plt.figure(figsize=(10, 6.5)) #画图plt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = Falsex = df['作物名称'] #以'作物名称'列为x轴y = df['日均收益'] #以'日均收益'列为x轴plt.bar(x,y,color = 'black')#判定当工作表里有图片时删除该图片,否则会导致每次运行程序重新计算添加图片都会多一张,太乱while wsh2.pictures: wsh2.pictures[0].delete() #翻阅xlwings 手册翻到的代码,这块我搜了半天都没找到怎么执行wsh2.pictures.add(figure,left = 500,top = 200)if season == "秋":i = 2        #公式需要循环获得每个单元格的值,定义各个变量,注意此处用f-string方式格式化变量,否则会报错while wsh3.range(f"B{i}").value is not None: #此处意指判定B列值为空时停止循环,注意判定为空值用NoneBi = wsh3.range(f"B{i}").value #定义变量Ci = wsh3.range(f"C{i}").valueFi = wsh3.range(f"F{i}").valueGi = wsh3.range(f"G{i}").valueHi = wsh3.range(f"H{i}").valueif day + int(Gi) > 28:  #用if语句判定如果目前天数加上作物生长需要天数大于28,则收益为0wsh3.range(f"L{i}").value = "0"else:if Hi == None:   #用if语句判定是否为可持续收获作物a = (Ci*Fi-Bi)/Gielse:a = (int(((28-day)-Gi)/Hi+1) *Ci*Fi -Bi)/(28-day)wsh3.range(f"L{i}").value = ai +=1workbook.save()df = pd.read_excel(file_path,sheet_name='autumn')  #用pandas读取'spring'工作表的数据figure = plt.figure() #画图plt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = Falsex = df['作物名称'] #以'作物名称'列为x轴y = df['日均收益'] #以'日均收益'列为x轴plt.bar(x,y,color = 'black')#判定当工作表里有图片时删除该图片,否则会导致每次运行程序重新计算添加图片都会多一张,太乱while wsh3.pictures: wsh3.pictures[0].delete() #翻阅xlwings 手册翻到的代码,这块我搜了半天都没找到怎么执行wsh3.pictures.add(figure,left = 500,top = 200)workbook.save()
workbook.close()
app.quit()

总结

1.在写根据用户选择判断季节调用工作表时应用if,当时错用了while,导致无限循环,低级错误
2.夏季作物太多,生成的图表字都挤到一起去了,查询了一下,可以用plt.figure(figsize=(10, 6.5))该代码调整图片的大小,将图片长宽拉到合适的值后字就正常了

2021.1.15——星露谷作物计算器的小改进相关推荐

  1. 2021.1.21——星露谷作物计算器的可视化

    2021.1.21--星露谷作物计算器的可视化 前言 目标 excel表格 代码 效果图 总结 前言 书承上文,之前做的计算器,仅仅是在调用excel里的数据,生成图表并放回到excel表里,每次要查 ...

  2. 挣钱的好方法_在“星露谷”赚钱的5种方法

    挣钱的好方法 When you're first starting out in Stardew Valley, it might be challenging to figure out how t ...

  3. 星露谷服务器一直没有空闲位置,星露谷物语小镇地图全npc住址位置 经验告诉你该这样...

    星露谷有近30位NPC,这么多的NPC要全部记住是一件很麻烦的事情,今天小编就为大家普及一下,NPC们所在的位置. 操作方法 01 首先来一张星露谷的地图.像素游戏所以地图看起来不清楚,不过不影响大体 ...

  4. win11无法打开.bat文件、打开.bat文件闪退解决方案,星露谷smapi mod安装时,.bat安装文件一闪而过

    遇到问题 在安装星露谷smapi mod时,安装mod所需要的.bat文件打不开,用管理员身份打开文件后,.bat文件一闪而过 问题分析 环境变量没有配置好 解决方案 打开设置-系统信息-高级系统设置 ...

  5. 怎么重置unity界面_从零开始的星露谷-用Unity还原星露谷物语:移动,界面篇(1)...

    大家好,我是再无悲喜的炎拳. 作为爆卖1000万份的模拟农场RPG,星露谷自然吸引了我这样的休闲玩家,本期待能愉悦的搭建自己的小农场,结果却沉迷钓鱼下矿无法自拔,过起了007的日子,最后只能大叹西八! ...

  6. Stardew Valley learn English 星露谷学英语

    Tools 工具 Copper/Steel/Gold/Iridium Hoe 铜/钢/金/铱 锄头 Pickaxe 镐 Axe 斧头 Scythe 镰刀 Watering Can 水壶 Trash C ...

  7. 星露谷物语联机服务器位置已满,星露谷物语联机版

    星露谷物语联机版是一款非常不错的像素模拟经营类型的手游,在星露谷物语联机版中你可以与来自世界各地的玩家们共同携手去创造一个更加稳定美好的家园,游戏中有着许多精彩好玩的地方等你前去探索娱乐,喜欢玩沙盒游 ...

  8. 星露谷远程联机教程-基于frp内网穿透

    如何在星露谷联机玩耍,是一个备受玩家关注的问题.通过使用远程联机技术,您可以在不同的地理位置与好友们一起玩这个游戏.在这篇文章中,我们将向您介绍如何使用Frp远程联机工具来实现星露谷远程联机. 首先, ...

  9. 星露谷物语json_《星露谷物语》1.5版本更新细节公开 已上线PC

    目前,<星露谷物语>官方公开了1.5版本更新细节,目前1.5版本已经在PC平台上线,以下为此次公开的主要更新要点. 主要更新要点: 此次更新加入了全新区域"Ginger岛&quo ...

最新文章

  1. Java NIO 系列教程 转
  2. Acwing 第 1 场热身赛 【完结】
  3. Python字典数据类型及基本操作
  4. Angular中父子组件之间父组件给子组件传值、传递方法、传递自己
  5. php输出远程文件边读边下载,php file_get_contents读取远程文件并输出
  6. 【TensorFlow】TensorFlow从浅入深系列之八 -- 教你学会变量管理
  7. PHP计划任务:如何使用Linux的Crontab执行PHP脚本(转载)
  8. 设计模式(二):难忘一次分享盛宴
  9. 科润酒吧点单系统服务器配置,那些牛逼的酒吧都用什么管理系统?
  10. threejs的shader材质 颜色混合函数mix
  11. echarts 大数据可视化
  12. High Reward Low Risk Strategies
  13. 制造并批量生产现实版“储物戒指”
  14. 想学.Net,只要功夫深,铁柱磨成针
  15. 读书笔记:《C++ PrimerPlus》 第九章~第十一章
  16. 【转】如何把一个开发者账号转移到另一个账号名下
  17. MFC单项选择题标准化考试系统
  18. 基于FPGA的两位按键控制LED数码管加减计数实验
  19. 今日份PS练习|玉桂狗海报
  20. 云计算与云原生 — 云原生微服务架构的技术内涵

热门文章

  1. 数据挖掘十大经典算法个人总结
  2. excel单元表格里怎么嵌入表格?Smartbi都能解决
  3. 前端导出Excel表格
  4. 使用 Mac 位置定位服务的应用的操作方法
  5. 5G NGC — NRF 网络注册功能
  6. AutoCAD .NET 二次开发实例:批量文本查找替换
  7. Windows mobile屏幕旋转解决方案
  8. 金蝶系统服务器上怎样备份文件,金蝶服务器数据库备份
  9. 51单片机精确延时设计
  10. (已修正精度 1mm左右)Realsense d435i深度相机+Aruco+棋盘格+OpenCV手眼标定全过程记录