https://www.cnblogs.com/evablogs/p/6754981.html

题目:输入某年某月某日,判断这一天是这一年的第几天?

程序分析:

月份天数:

月份 天数
2 平年28天,闰年29天
1,3,5,7,8,10,12 31
4,6,9,11 30

闰年:

1、非整百年:能被4整除的为闰年。(如2004年就是闰年,2100年不是闰年)
 

2、整百年:能被400整除的是闰年。(如2000年是闰年,1900年不是闰年)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>>> L=[31,31,30,31,30,31,31,30,31,30,31]
>>> def caldate(a,b,c):
    s=0
    if(a%100!=0 and a%4==0 or a%100==0 and a%400==0):
        L.insert(1,29)
    else:
        L.insert(1,28)
    for in range(b-1):
        s=s+L[i]
    return s+c
 
>>> caldate(2016,1,2)
2
>>> caldate(2016,3,2)
62

改进版:考虑了月份和天数的有效性(哈哈,对比网上的答案,一看自己的代码就像是菜鸟级的,还有很多需要学习的地方)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def caldate(a,b,c):
    L=[31,31,30,31,30,31,31,30,31,30,31]
    s=0
    Leap=0
    if(a%100!=0 and a%4==0 or a%100==0 and a%400==0):
        L.insert(1,29)
        Leap=1
    else:
        L.insert(1,28)
    if 0<b<=12:
        if 0<c<=31:
            if((b==2)and(Leap==1)and(c<=29)or((b==2)and(Leap==0)and(c<=28))):
                for in range(b-1):
                    s=s+L[i]
                    return s+c
            else:
                print 'The February should not greater than 28 or 29'
        else:
            print 'The date is error'
    else:
        print 'The month is invalid'

输出:

1
2
3
4
5
6
7
8
9
10
>>> caldate(2016,4,33)
The date is error
>>> caldate(2017,2,30)
The February should not greater than 28 or 29
>>> caldate(2017,2,28)
59
>>> caldate(2017,2,29)
The February should not greater than 28 or 29
>>> caldate(2017,13,29)
The month is invalid

网上答案:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/python
# -*- coding: UTF-8 -*-
  
year = int(raw_input('year:\n'))
month = int(raw_input('month:\n'))
day = int(raw_input('day:\n'))
  
months = (0,31,59,90,120,151,181,212,243,273,304,334)
if 0 < month <= 12:
    sum = months[month - 1]
else:
    print 'data error'
sum += day
leap = 0
if (year % 400 == 0or ((year % 4 == 0and (year % 100 != 0)):
    leap = 1
if (leap == 1and (month > 2):
    sum += 1
print 'it is the %dth day.' % sum

输出结果:

1
2
3
4
5
6
7
year:
2015
month:
6
day:
7
it is the 158th day.

python 实例四的更多相关文章

  1. python实例:解决经典扑克牌游戏 -- 四张牌凑24点 (二)

    Hey! 如果你还没有看这篇的上文的话,可以去稍稍瞅一眼,会帮助加速理解这一篇里面涉及到的递归结构哦!(上一篇点这里:<python实例:解决经典扑克牌游戏 -- 四张牌凑24点 (一)> ...

  2. Python 基础 四 面向对象杂谈

    Python 基础  四  面向对象杂谈 一.isinstance(obj,cls) 与issubcalss(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls ...

  3. 【Python实例一】使用minidom读取xml文件

    前言:最近刚在廖雪峰老师的网站里学习了Python的基础内容,想着循序渐进地找点实例练练手,网上看到有很多相关资料,决定针对感兴趣的内容实际编码实践一下,昨天刚好看到有关使用Python来读取XML文 ...

  4. 初识Python(四)

    一.数字数据类型 Python的数字数据类型用于存储数值,它是不可变的数据类型,这意味着改变数字数据类型,则需要一个新分配的对象: Python支持四种不同的数值类型: 整型(Int):通常被称为是整 ...

  5. 笨办法学python 第四版 中文pdf高清版|网盘下载内附提取码

    笨办法学 Python是Zed Shaw 编写的一本Python入门书籍.适合对计算机了解不多,没有学过编程,但对编程感兴趣的朋友学习使用.这本书以习题的方式引导读者一步一步学习编 程,从简单的打印一 ...

  6. 第一个python实例--监控cpu

    #第一个python实例:监控cpu #/bin/bash/env Python from __future__ import print_function from collections impo ...

  7. (转)Python实例手册

    原文地址:http://hi.baidu.com/quanzhou722/item/cf4471f8e23d3149932af2a7 实在是太好的资料了,不得不转 python实例手册 #encodi ...

  8. 使用docker安装部署Spark集群来训练CNN(含Python实例)

    使用docker安装部署Spark集群来训练CNN(含Python实例) http://blog.csdn.net/cyh_24/article/details/49683221 实验室有4台神服务器 ...

  9. C语言库函数大全及应用实例四

    原文:C语言库函数大全及应用实例四                                    [编程资料]C语言库函数大全及应用实例四 couble fmod (double x, dou ...

随机推荐

  1. [Swift]LeetCode883. 三维形体投影面积 | Projection Area of 3D Shapes

    On a N * N grid, we place some 1 * 1 * 1 cubes that are axis-aligned with the x, y, and z axes. Each ...

  2. Python面试真题第四节

    81.举例说明SQL注入和解决办法 82.s="info:xiaoZhang 33 shandong",用正则切分字符串输出['info', 'xiaoZhang', '33', ...

  3. Python中的json模块

    在Python内置函数中,有一个eval()函数可以将字符串内容转换成Python对象,比如我现在将一个字典 dic = {"name":"pengfy"}写到 ...

  4. iOS学习——#define、const、typedef的区别

    在iOS开发中经常遇到一些字段和类型的定义,例如配置生产和测试不同环境的参数等,这时候经常用到#define.const以及typedef.那么它们之间有什么区别呢?我们接下来一个一个具体了解下. 一 ...

  5. 课程五(Sequence Models),第三周(Sequence models & Attention mechanism) —— 2.Programming assignments:Trigger word detection

    Expected OutputTrigger Word Detection Welcome to the final programming assignment of this specializa ...

  6. AttributeError: module 'pip' has no attribute 'main'

    Pycharm在运行pip安装模块是报错如下: 解决方法: 找到安装路径下的packaging_tool.py文件修改如下: 我的路径为D:\Program Files\JetBrains\PyCha ...

  7. Lottie 动画里有图片怎么办?设计师小姐姐也能帮你减少开发量!

    一.序 Hi,大家好,我是承香墨影! Lottie 是 Airbnb 开源的一套跨平台的完整解决方案,设计师只需要使用 After Effectes (之后简称 AE)设计出动画之后,使用 Lotti ...

  8. 传统HTML页面实现模块化加载

    对于网站来说很多页面之间都有着大量的共享模块,如页头,页脚和用户栏等.对于具备后端视图引擎的框架来说这些共享都比较容易抽取,如asp.net mvc来说就有统一布局的MasterPage,@Secti ...

  9. 什么?你竟然还没有用这几个chrome插件?

    前言 其实18年之前写过一篇关于chrome插件的文章,里面安利了4个chrome插件.鉴于这已经是9102年了,之前觉得好用的chrome插件跟新了解到的比起来,还是差了那么点味道.所以决定再更新一 ...

  10. spring框架应用系列四:切面编程(环绕通知与前后置通知区别)

    切面编程(环绕通知与前后置通知区别) 本文系作者原创,转载请注明出处:http://www.cnblogs.com/further-further-further/p/7867034.html 解决问 ...