字符串的分割问题
日期字符串的构造函数:设计一个以西文减号分隔的字符串构造函数TDate(string dateStr)。例如,参数字符串可以为“2015-06-19”、“2015-6-19”、“2015-1-1”和“2015-10-1”等。其中,“6”和“06”均是有效的月份。测试:
测试函数和数据 验证函数与结果
TDate(null) Output()输出结果:错误信息
TDate(“”) Output()输出结果:错误信息
TDate(“2015”) Output()输出结果:错误信息
TDate(“201506”) Output()输出结果:错误信息
TDate(“20150620”) Output()输出结果:错误信息
TDate(“-”) Output()输出结果:错误信息
TDate(“1-1”) Output()输出结果:错误信息
TDate(“-1”) Output()输出结果:错误信息
TDate(“1-”) Output()输出结果:错误信息
TDate(“--”) Output()输出结果:错误信息
TDate(“-1-”) Output()输出结果:错误信息
TDate(“-1-1”); Output()输出结果:错误信息
TDate(“1-1-”) Output()输出结果:错误信息
TDate(“1--1”) Output()输出结果:错误信息
TDate(“--1”) Output()输出结果:错误信息
TDate(“1--”) Output()输出结果:错误信息
TDate(“1-1-1-”) Output()输出结果:错误信息
TDate(“-1-1-1”) Output()输出结果:错误信息
TDate(“10000-1-1”) Output()输出结果:错误信息
TDate(“9999-0-1”) Output()输出结果:错误信息
TDate(“1-1-0”) Output()输出结果:错误信息
TDate(“9999-13-1”) Output()输出结果:错误信息
TDate(“1-1-32”) Output()输出结果:错误信息
TDate(“1000-2-29”) Output()输出结果:错误信息
TDate(“2012-2-29”) Output()输出结果:2012-02-29
TDate(“1-1-1”) Output()输出结果:1-01-01
TDate(“02-02-02”) Output()输出结果:2-02-02
TDate(“9999-12-31”) Output()输出结果:9999-12-31
TDate(“9999-1-1”) Output()输出结果:9999-1-1,应该是9999-01-01
TDate(“9999-12-1”) Output()输出结果:9999-12-1,应该是9999-12-01
TDate(“9999-1-31”) Output()输出结果:9999-1-31,应该是9999-01-31
TDate(“201a-1a-b3”) Output()输出结果:错误信息
TDate(“ 2015-12-5”) Output()输出结果:错误信息
TDate(“2015-12 -5”) Output()输出结果:错误信息
TDate(“2015-12- 5”) Output()输出结果:错误信息
TDate(“2 015-12-5”) Output()输出结果:错误信息
TDate(“2015-1 2-5”) Output()输出结果:错误信息
TDate(“2015-12-1 5”) Output()输出结果:错误信息
如果用split函数进行分割,那如果输入没有“-”这个符号就会报错。
求解,怎么完成这个,使得测试数据全部成立
你把1-01-01这种也当做时间日期?
那你就没法算了,因为日期函数只会计算1000以后的年份,之前的不计算,也就是说,你要自己去判断那些年份的中哪些是润年,那些有2-29的日期,然后要重写大小月
总之,不科学
科学的计算方法是这样的:import time
def TDate(s):
try:
t = time.strptime(s, "%Y-%m-%d")
except:
print("错误信息")
else:
y,m,d = t
if m < 10:
m = "0"+str(m)
if d < 10:
d = "0"+str(d)
result = "-".join(map(str,))
if k == result:
print("输出结果:{}".format(k))
else:
print("输出结果:{},应该是{}".format(k,result))
思路就是,让Python自带的日期模块去检验这个日期字符串是否符合日期标准
符合标准的按照你的输入要求输出,不符合的自动报错就行
自己写标准你要写的猴年马月
本帖最后由 gopythoner 于 2017-7-19 17:28 编辑
还有,如果你非要按照你这个标准去查找时间的话,
我建议你往正则表达式上面想,用正则表达式先把完全不符合你这个格式的踢去
第一步踢去不符合格式的就留下全部满足"年份-月份-日"这种格式
然后把符合格式的留下,进行时间格式筛选
第二部就是踢去像2004-2-28这种关于是否润年的判断,所以要写润年判断
当然,还有,大小月也要判断
毕竟满足时间格式的并不是真的存在的时间 gopythoner 发表于 2017-7-19 17:17
你把1-01-01这种也当做时间日期?
那你就没法算了,因为日期函数只会计算1000以后的年份,之前的不计算, ...
这个作业的内容就是实现日期类,不能使用原生日期型数据类型和库文件中的,我询问的只是作业的某个部分,也是最后一步。 gopythoner 发表于 2017-7-19 17:26
还有,如果你非要按照你这个标准去查找时间的话,
我建议你往正则表达式上面想,用正则表达式先把完全不符 ...
我知道要去掉所有不符合格式的,你说的正则表达式我还没有学,想问问你,应该如何用正则表达式去掉所有不符合规范的测试数据。 轩~ 发表于 2017-7-20 10:11
我知道要去掉所有不符合格式的,你说的正则表达式我还没有学,想问问你,应该如何用正则表达式去掉所有不 ...
自己去查正则的用法
页:
[1]