python中实现输入指定日期,判断该日期是星期几

练习要求: 定义一个返回指定年月日的星期的函数weekday(y,m,d),结果为星期一、······、星期日。
输入指定日期,计算这一天是星期几

方法一:
代码实现思路:
1.自定义函数,用来实现switch/case语句
2.使用python内置函数来获取指定日期是星期几

代码实现如下:

from datetime import datetime
#利用num_to_string函数返回中文“星期几”
def num_to_string(num):
    numbers={
        0:"星期日",
        1:"星期一",
        2:"星期二",
        3:"星期三",
        4:"星期四",
        5:"星期五",
        6:"星期六"
        }
    return numbers.get(num,None)
#输入指定的日期(年 月 日 )
y=int(input("请输入年份(>=1),否则为1:"))
m=int(input("请输入月份(1~12),否则<1为1、>12为12:"))
d=int(input("请输入日期(1~31),否则<1为1、>ndays(y,m)为ndays(y,m):"))
#调用内置函数datetime来获取指定日期是星期几
date=datetime.date(datetime(year=y, month=m, day=d))
#使用isoweekday()函数,得出0~6表示星期一到星期日
n=str(date.isoweekday())
#获取n的值,用int来提取n的整型值
print("{0} 年 {1} 月 {2} 日是 {3}".format(y,m,d,num_to_string(int(n))))


方法二:

from calendar import *
def num_to_string(num):
    numbers={
        0:"日",1:"一",2:"二",3:"三",4:"四",5:"五",6:"六"
    }
    return numbers.get(num,None)
def weekday(y,m,d):
    monthDay1=[31,28,31,30,31,30,31,31,30,31,30,31]   
    days=0
    for i in range(1,y):
        if(isleap(i)):#判断是否是闰年
            days=days+366
        else:
            days=days+365
    for j in range(1,m):
        if(j==2 and isleap(y)):  #判断是否是闰年和二月份      
            days=days+29
        else:          
            days=days+monthDay1[j-1]
    total_days=days+d
    xingqi=(total_days)%7   #余数为0是星期日,余数为1是星期一,6是星期六
    print("{0} 年 {1} 月 {2} 日是 星期{3}".format(y,m,d,num_to_string(int(xingqi))))   
y=int(input("请输入年份(>=1),否则为1:"))
m=int(input("请输入月份(1~12),否则<1为1、>12为12:"))
d=int(input("请输入日期(1~31),否则<1为1、>ndays(y,m)为ndays(y,m):"))
#转换不符合的输入
if y<1: y=1
if m<1: m=1
if m>12: m=12
if d<1: d=1
if d>31: d=31
total=weekday(int(y),int(m),int(d)) 

运行结果:
1.

请输入年份(>=1),否则为1:2018

请输入月份(1~12),否则<11>121212

请输入日期(1~31),否则<11>ndays(y,m)为ndays(y,m)5
2018125 日是 星期三
请输入年份(>=1),否则为1:2020

请输入月份(1~12),否则<11>121210

请输入日期(1~31),否则<11>ndays(y,m)为ndays(y,m)30
20201030 日是 星期五
  • 8
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值