三天打鱼两天晒网(python)
三天打鱼两天晒网
问题描述:中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。
输入:键盘输入数据或者文件输入测试数据
输出:判断的结果
要求:输入日期的正确性验证,文件测试数据
解题思路:核心思路就是得到给定的日期和给定的最开始的日期之间相隔的天数,然后以天数除以5,得到余数,通过判断余数是大于3还是小于三,大于三则是晒网,小于三则是打鱼。(python)
程序流程图:
代码编写:
代码的编写注重流程,根据本题的解题思路,第一个要解决的就是解决两个日期之间的时间差天数,但是对于一个输入的日期,首先要把字符类型转化成日期类型,然后通过日期类型之间的相互计算得到时间差。
通过时间差除以打鱼晒网的周期,得到的一个余数即是这天在这五天中所处的哪一天,通过数学知识很容易得到这天在进行的动作。也就是天数除以5取余,如果结果大于3,则表示在晒网,如果结果小于3,则表示在打鱼。
1,首先先解决计算天数的问题
通过调用datetime模块中datetime中的方法strptime(),来将符合格式要求的字符串的数据转化成日期类型的数据,最后输出其中的间隔天数。
本模块中遇到的问题则是函数的选择,以及从俩个datetime类型的数据装化成整形的数据对象类型。
2,其次解决的是计算的问题
传入相应的参数,其中的第一个参数是相隔的天数,第二个参数是输入的日期数据,分别用来判断和写入文件中来扩大自己的out.txt文件。本模块遇到的问题是输出文件的格式,于是在检查的同时加上换行符得到换行的文件,更容易观察。
到此最基本的输入输出问题判断等核心问题已经解决。
3,文件测试
文件测试通过逐行的读取输入,调用第一点的方法来获取天数,调用获取结果的方法,来获得每条的结果,然后写入文件之中,利用循环,当读取到最后的时候直接结束。
4,判断数据的有效性
调用time模块中的strptime()方法,使用try机制获得数据是否满足日期的格式要求,测试如下:
5,主测试的方法
过程中采用输入数据测试和文件测试混合的办法,于是每次输入数据就会有一个输入正确性的检测,数据不合格就继续输入。
重点是利用输入的数据去扩大in.txt文件,在扩大过程中,遇到了一系列的问题。首先,in.txt文件的产生必须满足文件测试方法的运行。
由于当文件in.txt为空的时候,或者首行为空行的时候,就会出现文件测试方法的报错。
而对于in.txt文件,必须满足数据输入进去必须换行。 那么就是文件为空时,不需要换行。本来想到的是直接在每条记录的后面换行,但是一旦一个文件最开始的时候里卖弄存有数据,那么我们第一条记录肯定与最后一条记录同行,所以需要一个检测和在记录前换行。比如这种数据:
最终通过os.path.getsize()获取文件的大小,满足以上需求,最终结果为:
总结:
本次的代码编写过程中,循序渐进的编写。首先通过分析题目得出题目解法的核心思路,然后第一步就是通过利用核心思路去解决我们这个问题需要解决的核心问题。也就是利用python里面相关的模块,来得到用户输入的天数与最开始的天数的差,得到天数,再计算得到具体的结果。
然后再基于我们对核心问题的解,去扩展得到满足更多要求的解法,最终满足整个的基本要求和提高要求。满足文件测试的需求,满足输入数据检测的需求,满足扩大文件的需求。
总的来说就是循序渐进,一步一步的解决一个要求很多的问题。
附完整代码如下:
from datetime import datetime import time import os# date input with the keyboard def get_days(date_input):# get the daysdate_base = '2010-01-01'# date_input = input('please input the date you want to test with the form xxxx-xx-xx:')# check its form and work out the answerdate_input = datetime.strptime(date_input, '%Y-%m-%d')date_base = datetime.strptime(date_base, '%Y-%m-%d')date_days = (date_input - date_base).daysreturn date_days# to work out the result into the file out.txt def work_result(date_days,date_input):mod_day = date_days % 5# date_input = datetime.strptime(date_input, '%Y-%m-%d')with open('out.txt', 'a') as file_out:if mod_day <= 3:file_out.write(date_input + ' fishing\n')print(date_input + ' fishing')else:file_out.write(date_input + ' webbing\n')print(date_input + ' webbing')file_out.close()# test the aoolication with file date def file_date_test():print('the following is file test')with open('in.txt') as file:context_line = file.readline()while context_line:# remove the character '\n'context_line = context_line.rstrip('\n')# get the daysdays_in_file = get_days(context_line)# work out into the file out.txtwork_result(days_in_file,context_line)context_line = file.readline()file.close()# check the date def isVaildDate(date):try:time.strptime(date, "%Y-%m-%d")return Trueexcept:return Falseif __name__ == "__main__":date_input = input('please input the date you want to test with the form xxxx-xx-xx:')while not isVaildDate(date_input):date_input =input('date is illegal,please check and input it again:')# expand ths test file use the inputwith open('in.txt', 'a') as file_input:size = os.path.getsize('in.txt')if size==0:file_input.write(date_input)else:file_input.write('\n'+ date_input)file_input.close()# test the applicationdate_days = get_days(date_input)work_result(date_days,date_input)# test the file input and outputfile_date_test()
三天打鱼两天晒网(python)相关推荐
- 三天打鱼两天晒网python程序设计_Python经常会遇到三天的笔试题:钓鱼和两天的晒网:,之,三天打鱼,两天晒网...
问题概述:中国有句俗语叫"三天打鱼两天晒网"某人从1990年1月1日起开始"三天打鱼两天晒网",问这个人在以后的某一天中是"打鱼"还是&qu ...
- 三天打鱼两天晒网python
一.问题描述 中国有句俗话叫"三天打鱼,两天晒网",某人从2010年1月1日期"三天打鱼,两天晒网",问这个人在以后的某天是"打鱼"还是&q ...
- python天天向上的力量三天打鱼两天晒网_017 示例3-天天向上的力量-Go语言中文社区...
一."天天向上的力量"问题分析 1.1 天天向上的力量 基本问题:持续的价值 一年365天,每天进步1%,累计进步多少呢? (1.01^{365}) 一年365天,每天退步1%,累 ...
- python天天向上的力量三天打鱼两天晒网_天天向上的力量
我前阵子三天打鱼两天晒网地学了一点Python,也就开个头的样子吧,然后就不想学了,一鼓作气再而衰三而竭了.我学到课程的第三个例子,老师给起的名字叫"天天向上的力量". 其实就是那 ...
- Python : 7-6 三天打鱼两天晒网 (15 分)
Python : 7-6 三天打鱼两天晒网 (15 分) 中国有句俗语叫"三天打鱼两天晒网".假设某人从某天起,开始"三天打鱼两天晒网",问这个人在以后的第N天 ...
- 中国有句俗语叫“三天打鱼两天晒网”。某人从2010年1月1日起开始“三天打鱼两天晒网”, 问这个人在以后的某一天中是“打鱼”还是“晒网”。用C或C++语言/java/python实现程序解决问题
/* 中国有句俗语叫"三天打鱼两天晒网".某人从2010年1月1日起开始"三天打鱼两天晒网", 问这个人在以后的某一天中是"打鱼"还是&qu ...
- python天天向上的力量三天打鱼两天晒网_三天打鱼两天晒网问题
题目:中国有句俗语叫"三天打鱼两天晒网".某人从2010年1月1日起开始"三天打鱼两天晒网",问这个人在以后的某一天中是"打鱼"还是&quo ...
- Python之三天打鱼两天晒网
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.pandas是什么? 二.使用步骤 1.引入库 2.读入数据 总结 前言 今天老师在课堂上教我们如何运用Pytho ...
- 三天打鱼两天晒网问题Python求解
三天打鱼两天晒网问题Python求解 目录 使用Python求解三天打鱼两天晒网问题. 使用Java模拟XN*2图灵机 问题: 中国有句俗语叫"三天打鱼两天晒网".某人从2010年 ...
最新文章
- 项目实施中应该注意的事项
- 直播 | 孙剑团队最新工作:用于物体检测的实例条件知识蒸馏 | NeurIPS 2021
- SpringBoot 2.0 编程方式配置,不使用默认配置方式
- Coursera公开课笔记: 斯坦福大学机器学习第七课“正则化(Regularization)”
- 从操作系统的PV操作理解JAVA的synchronized同步方法,同步代码块实现,及比较
- 安装 Python-Client
- Java 练习:编写 Java 程序,输入年份和月份,使用 switch 结构计算对应月份的天数。月份为 1、3、5、7、8、10、12 时,天数为 31 天。月份为 4、6、9、11 时,天数为 3
- 股票买卖(信息学奥赛一本通-T1302)
- 漫步最优化十八——点到集合的映射
- 什么是MongoDB
- 华为否认今年将推出搭载鸿蒙系统手机;苹果或在 3 年内推出 5G 基带芯片;Node.js 12.12.0 发布 | 极客头条...
- 通信业正面临一场巨变,要么滚蛋要么改变
- Ubuntu Java环境配置
- C# 使用Newtonsoft.Json 对象转json字符串,json字符串转对象
- 12月Java原生商城APP源码-完全开源
- 二手书交易系统功能结构图
- 【python进阶】古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
- UVA - 10041 Vito's Family
- MYSQL super_read_only 到底有没有必要存在
- uiautomation(如何)实现自动化
热门文章
- 野火i.MX6ULL Linux开发板资料
- Word字体大小对照换算表(字号、磅、英寸、像素)
- 如何在黑苹果上开启HiDPI分辨率
- 【原理】极大似然法(MLE)——概率论在统计学的应用
- 惠普服务器-ILO使用
- w ndows7安装包如何安装到电脑上,Win7如何升级到sp1版本?Windows7系统安装Service Pack1升级包教程...
- ts无损剪辑合并_将你的视频无损封装成MP4,非转码哦!
- 服务器系统2016系统安装,Windows Server 2016系统安装要求
- Windows操作系统进阶:AD域
- FPGA编程过程中遇到的一些错误