代码_日期的验证

【需求描述】: 在手机的系统设置中,系统日期的有效范围为1971年1月1日到2035年12月31日

【实现功能】: 输入三个数,分别表示年、月、日,判断是否为一个合法的日期输入,且日期有效范围为1971年1月1日到2035年12月31日

【开发设计】: 略

【代码及测试数据】:

# -*- coding: utf-8 -*-

import sys
reload(sys)
sys.setdefaultencoding('utf-8')


#输入三个数,分别表示年月 日,判断是否为一个合法日期输入
def judge_date(y, m, d):
    #判断年份、月份、日期是否为整数
    try:
        year = int(y)
        month = int(m)
        day = int(d)
    except ValueError,e:
        return [1, "年或月或日只能为整数"]

    #判断年份的范围
    if year < 1971 or year > 2099:
        return [1,"年份的范围只能是【1971, 2099】"]

    months=[31,28,31,30,31,30,31,31,30,31,30,31]

    #闰年的话2月最多29天
    if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
        months[1]=29

    if month < 1 or month > 12:
        return [1, "月份只能为【1, 12】, 而实际输入的为%d" % month]
    elif day < 1 or day > months[month - 1]:
        return [1, "%d月份只能为【1, %d】, 而实际输入的为%d" % \
                (month, months[month - 1], day)]
    else:
        return [0, "%d-%d-%d" % (year, month, day)]


#测试数据
#有效测试数据
valid_params = {
    "param_01": ["1971", "1", "1"],
    "param_02": ["2035", "12", "31"],
    "param_03": ["1980", "2", "29"],
    "param_04": ["1994", "3", "31"],
    "param_05": ["1999", "2", "28"],
    "param_06": ["2000", "4", "30"],
    "param_07": ["2010", "5", "31"],
    "param_08": ["2028", "6", "30"],
    "param_09": ["2030", "7", "31"],
    "param_10": ["2035", "8", "31"],
    "param_11": ["2035", "9", "30"],
    "param_12": ["2020", "10", "31"],
    "param_13": ["2000", "11", "30"]
}

#无法测试数据
invalid_params = {
    "param_01": ["1972", "01", "32"],
    "param_02": ["1972", "02", "0"],
    "param_03": ["1985", "07", "a"],
    "param_04": ["1999", "04", ""],
    "param_05": ["1999", "00", "20"],
    "param_06": ["2000", "13", "18"],
    "param_07": ["2012", "B", "31"],
    "param_08": ["2030", "+", "10"],
    "param_09": ["0000", "12", "18"],
    "param_10": ["4038", "11", "38"],
    "param_11": ["20+)", "13", "20"],
    "param_12": ["++++", "-*", "%%"]
}


#验证过程
print "-------------有效值的测试-----------"
for valid_value in valid_params.values():
    #print valid_value
    result = judge_date(valid_value[0], valid_value[1], valid_value[2])
    if result[0] == 0:
        print "【Pass】, 输入的年:%s, 月:%s ,日: %s, 输出: %s" % \
              (valid_value[0],valid_value[1], valid_value[2], result[1])
    else:
        print "【Fail】, 输入的年:%s, 月:%s ,日: %s, 输出: %s" %\
              (valid_value[0],valid_value[1], valid_value[2], result[1])

print "\n-------------无效值的测试----------"
for invalid_value in invalid_params.values():
    #print invalid_value
    result = judge_date(invalid_value[0], invalid_value[1], invalid_value[2])
    if result[0] == 1:
        print "【Pass】, 输入的年:%s, 月:%s ,日: %s, 错误信息: %s" %\
              (invalid_value[0],invalid_value[1], invalid_value[2], result[1])
    else:
        print "【Fail】, 输入的年:%s, 月:%s ,日: %s, 错误信息: %s" %\
              (invalid_value[0],invalid_value[1], invalid_value[2], result[1])

【运行结果】:

 

转载于:https://www.cnblogs.com/zhuhaiying/p/6409243.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值