智一面的面试题提供python的测试题
使用地址:http://www.gtalent.cn/exam/interview?token=906315a76b5c14231889351088713f76

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

解法1
程序分析

1、以5月2日为例,应该先把前四个月的加起来,

2、然后再加上2天即本年的第几天,

3、特殊情况,闰年且输入月份大于2时需考虑多加一天:

4、闰年

1、年份能被4整除;
2、年份若是 100 的整数倍的话需被400整除,否则是平年。
程序源代码:

year = int(input('year:\n'))
month = int(input('month:\n'))
day = int(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 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
    leap = 1
if (leap == 1) and (month > 2):
    sum += 1
print ('%d 月 %d 号是 %d 年的第 %d 天.' % (month,day,year,sum))
运行结果

 

解法2
程序分析

1、定义判断闰年的方法

2、通过字典的方式将12个月及天数写成字典

3、然后根据输入的年月进行判断

#判断是否是闰年
def isLeapYear(year):
    if ((year%4 == 0 or a%400 == 0 ) and year%100 != 0 ):
        return 1
    else:
        return 0
dict = {1: 31, 2: 28, 3: 31, 4: 30, 5: 31, 6: 30, 7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31}
year = int(input("Input year:"))
month = int(input("Input month:"))
day = int(input("Input day:"))
sum = 0
for i in range(1,month):
    sum = sum + dict[i]
sum = sum + isLeapYear(year) + day
print ('%d 月 %d 号是 %d 年的第 %d 天.' % (month,day,year,sum))
运行结果

 

方法3
程序分析

1、通过调用内部库 time

2、通过time的strptime方法直接获取

import time
 
inputday = input("请输入年份,格式如XXXX-XX-XX:")
days=time.strptime( inputday,'%Y-%m-%d').tm_yday
year=time.strptime( inputday,'%Y-%m-%d').tm_year
print ("%s 是 %d 第 %d 天"%(inputday,year,days))
运行结果

我们的python技术交流群:941108876
智一面的面试题提供python的测试题
使用地址:http://www.gtalent.cn/exam/interview?token=364151fab9fb6e1b468f50b4d83afd42