python练习题2优化1

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python练习题2优化1相关的知识,希望对你有一定的参考价值。

#给出一个日期和一个数字,判断日期加上数字之后的新日期
def day(date,num):
    #date=raw_input("(MM/DD/YY)>>")
    date=date.split("/")
    year1=int(date[-1])
    month1=int(date[0])
    day1=int(date[1])
    #num=raw_input("enter a number:")
    num=int(num)
    month_days=[31,28,31,30,31,30,31,31,30,31,30,31]
    
    if int(date[2])%4==0:
        month_days[1]=29
        years1=366
    else:
        years1=365
    days1=sum(month_days[:(month1-1)])+day1
    sumdays=days1+num
    if num>=0: #数字为正数或者0
        lis=[]
        if sumdays<=years1: #本年
            year2=year1
            print year2
            lis.append(year2)
            sumday=0
            for i,j in enumerate(month_days):
                if sumday<sumdays:
                    sumday=sumday+int(j)
                
            month2=i+1
            print month2
            lis.append(month2)
            marginday=sum(month_days[:i+1])-sumdays
            day2=month_days[i]-marginday
            print day2
            lis.append(day2)
             
            print "%d天后的日期为:%d年%d月%d号"%(num,lis[0],lis[1],lis[2])   
        else:  #不在本年

            lis=[]
            remain1=years1-days1
            remain2=num-remain1
            
            year2=year1+1
            if year2%4==0:
                years2=366
                month_days[1]=29   
            else:
                years2=365
                
            while remain2>years2:              
                remain2=remain2-years2
                year2=year2+1
                if year2%4==0:
                    years2=366
                    month_days[1]=29   
                else:
                    years2=365 
                    month_days[1]=28
            lis.append(year2)
                   
           
            for i,j in enumerate(month_days):
                if remain2<=sum(month_days[:i+1]):
                    month2=i+1
                    lis.append(month2)
                    day2=remain2-sum(month_days[:i])
                    lis.append(day2)
                    break
            print type(lis)
            print lis
            print "%d天后的日期为:%d年%d月%d号"%(num,lis[0],lis[1],lis[2])
    else: #num为负数的时候
        lis=[]
        remindays=0
        years2=years1
        year2=year1        
        if sumdays<=0:
            remindays=abs(sumdays)
            while remindays>=0:
                year2=year2-1
                
                if year2%4==0:
                    remindays=remindays-366
                else:
                    remindays=remindays-365
            lis.append(year2)
            print remindays  
            remindays=abs(remindays)
        else:
            remindays=sumdays
            lis.append(year1)
            
        print remindays
        for i,j in enumerate(month_days):
            if remindays<=sum(month_days[:i+1]):
                month2=i+1
                lis.append(month2)
                day2=remindays-sum(month_days[:i])
                lis.append(day2)
                break
            
        print "%d天后的日期为:%d年%d月%d号"%(num,lis[0],lis[1],lis[2])   
        
day("12/20/2015",0)

 

以上是关于python练习题2优化1的主要内容,如果未能解决你的问题,请参考以下文章

优化 C# 代码片段、ObservableCollection 和 AddRange

使用 C++ 反转句子中的每个单词需要对我的代码片段进行代码优化

python练习题2优化1

从JVM的角度看JAVA代码--代码优化

Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)(代码片段

spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段