Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.
Эта статья участвовала в "Проект «Звезда раскопок»”, чтобы выиграть творческий подарочный пакет и бросить вызов творческим поощрительным деньгам.
Сегодня я хочу сделать небольшую функцию с python, то есть реализовать запрос вечного календаря.
def is_leap_year(year):
if year/4==0 and year/400 !=0:
return True
elif year/100 == 0 and year/400 ==0 :
return True
else:
return False
Сначала определите, високосный ли это год, потому что полезно вычислить, 29 ли дней в феврале. Високосными называются те, которые делятся на 4 и не делятся на 400. Високосный год, который делится на 100 и делится на 400, является невисокосным.
def getMonthDays(year,month):
days = 31 #31天居多,设置为默认值
if month == 2 : #2月份要判断是否是闰年
if is_leap_year(year):
days=29
else:
days=28;
elif month in [4,6,9,11]: #判断小月,只有30天
days=30
return days
Получает количество дней в месяце указанного года и месяца за годом и месяцем. Здесь следует отметить, что февраль нужно рассчитать, является ли он високосным годом, если это високосный год, то в нем 29 дней, если нет, то в феврале всего 28 дней. Тогда [4,6,9,11] — это маленький месяц всего с 30 днями, а остальные — большие месяцы с 31 днем.
def getTotalDays(year,month):
totalDays=0
for i in range(1990,year): #使用range来循环,算出多少年多少天
if is_leap_year(i): #判断是否是闰年
totalDays += 366
else:
totalDays += 365
for i in range(1,month): #使用range循环,算出今年前面几个月过了多少天
totalDays +=getMonthDays(year,i)
return totalDays
1990-01-01 Получите месяц со времени общего количества дней. Во-первых, вы не можете войти здесь меньше, чем в январе 1990 года, в противном случае возвращаются 0 дней. Нам нужно использовать год, чтобы определить, сколько дней прошло в целом, если это скачок года, это было бы +366, +365, если это не выжимающий год. Все дни и, наконец, передний месяц плюс в этом месяце, так что вы можете получить количество дней с 1990-01-01.
if __name__ == '__main__':
while True:
print "××××××××××python实现万年历××××××××"
year = raw_input("请输入年份(如:1990):")
month = raw_input("请输入月份:如:1")
try:
year = int(year)
month = int(month)
if month <1 or month >12:
print "年份或者月份输入错误,请重新输入!"
continue
except:
print "年份或者月份输入错误,请重新输入!"
continue
break
print "日\t一\t二\t三\t四\t五\t六"
iCount = 0 #计数器来判断是否换行
for i in range(getTotalDays(year,month)%7):
print '\t', #输出空不换行
iCount+=1
for i in range(1,getMonthDays(year,month)):
print i,
print '\t',
iCount +=1
if iCount%7 == 0 : #计数器取余为0,换行
print ''
Наконец, вам нужно только ввести год и месяц, и вы можете ввести полный календарь всего месяца. Независимо от того, запрашиваете ли вы предыдущие календари или запрашиваете будущие календари, его можно рассчитать. Также необходимо сделать некоторую отказоустойчивую обработку, чтобы пользователи не вводили неверные данные. Здесь %7 используется для ветвления каждые 7 дней с понедельника по воскресенье. Это напечатано точно так же, как календарь.
Не стесняйтесь обсуждать со мной программу, а также отвечать на вопросы.Обратите внимание на общедоступный номер: Поэтический код, подружиться.