智一面的面试题提供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