鱼C论坛

 找回密码
 立即注册
楼主: 新手·ing

[技术交流] Python:每日一题 4

[复制链接]
发表于 2018-1-25 18:36:00 | 显示全部楼层
jerryxjr1220 发表于 2017-3-26 12:55
python的强大就在于有非常多好用的库,有现成的解决方案就不要重复造轮子了

要达到看到一个问题就能反映上来可以直接用哪个库里现成的方法来解决是要把所有的库都过一遍?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-7 15:01:30 | 显示全部楼层
def M_T(spare = 0 , M = 1 , day = 20):
                count = 0
                for each_day in range(0,(M - 1)):
                                if((M - 1) > 0):
                                                count += today[each_day]
                if(spare == 0):
                                count += day
                                print('这是这年的第%d天' % count)
                elif(spare == 1):
                                count += day + 1
                                print('这是这年的第%d天' % count)
                elif(M - 1) == 0:
                                print('这是这年的第%d天' % day)

可以放到闰年里了
>>> M_T()
这是这年的第20天
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-13 11:17:32 | 显示全部楼层
本帖最后由 凌九霄 于 2018-2-13 11:55 编辑
  1. #Python强大的地方就是各种模块齐全,直接调用,不用考虑繁杂的细节
  2. import datetime

  3. Y, M, D = [int(x) for x in input('请输入日期(年/月/日): ').split('/')]
  4. day1 = datetime.date(Y, 1, 1)
  5. day2 = datetime.date(Y, M, D)
  6. print("输入的日期是{0}年中的第{1}天".format(Y, day2.__sub__(day1).days + 1))
复制代码

  1. #更简单的实现
  2. import time

  3. day = input("请输入日期(YYYYMMDD):")
  4. struct_time = time.strptime(day, "%Y%m%d")
  5. print("输入日期为{0}年中的第{1}天 :".format(struct_time.tm_year, struct_time.tm_yday))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-19 11:19:15 | 显示全部楼层
  1. month_day = (0,31,28,31,30,31,30,31,31,30,31,30,31)

  2. def isRun(x):
  3.     if x%400 == 0 or (x%100 != 0 and x%4 == 0):
  4.         return True
  5.     return False

  6. tim = str(input())
  7. year,month,date = int(tim[0:4]),int(tim[4:6]),int(tim[6:])
  8. day = 0
  9. for i in range(0,month):
  10.     day += month_day[i]
  11. day += date
  12. if isRun(year) and month > 2:
  13.     day += 1
  14. print (day)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-2 11:18:16 | 显示全部楼层
  1. def leap(n):
  2.     if (n % 4 == 0 and n % 100 != 0) or (n % 400 == 0):
  3.         return 1
  4.     else:
  5.         return 0
  6. print('日期格式为:YYYY-MM-DD')
  7. date = input('请输入日期:\n')
  8. day = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
  9. lis = date.split('-')
  10. Year = int(lis[0])
  11. Month = int(lis[1])
  12. Day = int(lis[2])
  13. Flag = leap(Year)
  14. count = Month - 1
  15. if Month > 2:
  16.     result = sum(day[0:count]) + Flag + Day
  17. else:
  18.     result = sum(day[0:count])
  19. print(result)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-3 15:56:39 | 显示全部楼层
  1. pn = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30 ]
  2. def mtest(m):
  3.     if 0<m<=12:
  4.         return m
  5. def dtest(d):
  6.     if m in [1,3,5,7,8,10,12]:
  7.         if 0<d<=31:
  8.             return d
  9.     elif m in [4,6,9,11]:
  10.         if 0<d<=30:
  11.             return d
  12.     elif m == 2 and (y% 4 == 0 or (y % 400 == 0 and y % 100 != 0)):
  13.         pn[1] = 29
  14.         if 0<d<=pn[1]:
  15.             return d
  16.     elif m == 2:
  17.         if 0<d<=pn[1]:
  18.             return d
  19. y = int(input("年 "))
  20. m = int(input("月 "))
  21. d = int(input("日 "))

  22. print(sum(pn[:mtest(m)-1])+dtest(d))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-8 11:04:55 | 显示全部楼层

判读润年有误.:)
(年能整除4且不能整除100  )或 (年能整除 400 ) 是润年!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-8 11:19:35 | 显示全部楼层

  1. #生成有效的年份及日期列表
  2. y = [i for i in range(1900,2018)]
  3. d = [i for i in range(1,32)]


  4. #粗判断输入日期是否正确
  5. while 1 :
  6.     a = input ("请输入年月日YYYYMMDD:")
  7.     year = int (a[:4])
  8.     month = int (a[4:6])
  9.     day = int(a[6:8])
  10.     if year in y and 0 < month < 13 and  day in d:
  11.         break
  12.     else:
  13.         print ("输入错误!!!")
  14. days = 0

  15. monthday = [31,28,31,30,31,30,31,31,30,31,30,31]

  16. if month == 2:
  17.     days += 31
  18. elif month >2:

  19.     for i in range (month-1):
  20.         days += monthday[i]

  21. days += day


  22. #判断是否为润年

  23. if ((year % 4 == 0 and year % 100 != 0) or year % 400 == 0) and month > 2:
  24.     days += 1

  25. print ("这是本年第{}天".format(days))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-11 19:38:37 | 显示全部楼层
  1. import datetime
  2. years = int(input('请输入哪年:'))
  3. months = int(input('请输入哪月:'))
  4. days = int(input('请输入哪日:'))
  5. a = datetime.date(years,1,1)
  6. b = datetime.date(years,months,days)
  7. print((a.__rsub__(b).days)+1)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-18 21:16:02 | 显示全部楼层
import calendar
def mdays(date):
    year = int(date[:4])
    month = int(date[4:6])
    datetime = int(date[6:8])
    days = 0
    for i in range(1, month):
        if month == 1:
            days = datetime
            print("今天是今年的第%d天" % days)
        else:
            monthdays = calendar.monthrange(year, i)[1]
            days += monthdays
            if i == month - 1:
                print("今天是今年的第%d天" % (days + datetime))


date = input("请按以下格式输入年月日(20160916):")
mdays(date)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-23 09:38:39 | 显示全部楼层
m = input("请输入一个日期:")
a = m.split(m[4])
year = int(a[0])
month = int(a[1])
day = int(a[2])
days = 0
moth = [31,28,31,30,31,30,31,31,30,31,30,31]
for i in range(1,month):
    days =days+moth[i-1]
if month> 2 and (year%4 ==0 or (year%100==0 and year%400)):
    days = days +day+1
else:
    days=days+day
print("这是%d年的%d天"%(year,days))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-26 01:10:05 | 显示全部楼层
def isyear(year):#闰年
    if year%400 == 0 or (year%100 != 0  and year%4 ==0):
        return 1
    else:
        return 0

def day_year(month,days):#判断第几天
    day = [31,28,31,30,31,30,31,31,30,30,30,31]
    if isyear(year):
        add_day = 0
        for each  in range(month):
            add_day += day[each]
        return add_day+1
    else:
        add_day = 0
        for each  in range(month):
            add_day += day[each]
        return add_day
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
days = int(input("请输入天:"))
add_day1 = day_year(month,days)
print("这是%d年得第%d天。"%(year,add_day1))
   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-26 01:26:28 | 显示全部楼层
def isyear(year):#闰年
    if year%400 == 0 or (year%100 != 0  and year%4 ==0):
        return 1
    else:
        return 0

def day_year(month,days):#判断第几天
    day = [31,28,31,30,31,30,31,31,30,30,30,31]
    if isyear(year):
        add_day = 0
        for each  in range(month-1):
            add_day += day[each]
        return add_day+1
    else:
        add_day = 0
        for each  in range(month-1):
            add_day += day[each]
        return add_day
while True:
    print("是否继续(Y/N)")
    if input("") == "Y":
        year = int(input("请输入年份:"))
        month = int(input("请输入月份:"))
        days = int(input("请输入天:"))
        if (0<month <=12) and (0<days<=31):
            add_day1 = day_year(month,days)
            print("这是%d年得第%d天。"%(year,add_day1))
        else:
            print("日期格式不对,\n一年只有十二个月,\n一月最多有三十一天。")
            print("请新输入日期格式。")
            continue
    else:
        break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-4 17:17:23 | 显示全部楼层
year = input('pleses input years:')
while not year.isdigit():
    year = input('输入错误,请输入整数')
yue = input('plese input yue:')
while not yue.isdigit()or 1 > int(yue) or int(yue) > 12:
    yue = input('输入错误,请输入1-12的整数')
day = input('plese input day')
while not day.isdigit() or 1 > int(day) or int(day) > 31:
    day = input('输入错误,请输入1-31之间的整数')
yue = int(yue)
day = int(day)
year = int(year)
months = [0,31,59,89,120,151,181,212,243,273,304,334]
l = yue - 1
sun = months[l]
sun = sun + day
if (year%4==0 or year%400==0)and yue > 2:
    sun +=1
print(sun)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-6 23:57:34 | 显示全部楼层
  1. '''
  2. 输入某年某月某日,判断这一天是这一年的第几天?
  3. '''
  4. def isLpy(year):
  5.     if ((year%4==0)and(year%100!=0))or(year%400==0):
  6.         return 1
  7.     else:
  8.         return 0
  9. def cdays(year,month,date):
  10.     dayslist=[0,31,59,90,120,151,181,212,243,273,304,334]
  11.     days=dayslist[month-1]
  12.     if isLpy(year) and month>2:
  13.         days=days+1
  14.     days=days+date
  15.     return days

  16. if __name__=='__main__':
  17.     year=int(input("请输入年份数:\n"))
  18.     month=int(input("请输入月份数:\n"))
  19.     date=int(input("请输入日期数:\n"))
  20.     print('%d年%d月%d号是%d年的第%d天。'%(year,month,date,year,cdays(year,month,date)))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-20 09:01:55 | 显示全部楼层
def year_days(year):
    '''判断是否为闰年,1代表闰年,0代表平年'''
   
    if (year%100) == 0:
        if (year%400) == 0:
            return 1
        else:
            return 0
    elif (year%4) == 0:
        return 1
    else:
        return 0
        
year =  int(input('输入年:'))
month = int(input('输入月:'))
day = int(input('输入日:'))
month_list = [1,2,3,4,5,6,7,8,9,10,11,12]
month_days_leap = [31,29,31,30,31,30,31,31,30,31,30,31]
month_days_nonleap = [31,28,31,30,31,30,31,31,30,31,30,31]
if year_days(year) == 1:
    for i in month_list:
        if month == i:
          month_days_leap_temp = month_days_leap[:(i-1)]
         
          print('这是%d年的第%d天' %(year,(sum(month_days_leap_temp) + day)))
else :
    for i in month_list:
        if month == i:
          month_days_nonleap_temp = month_days_nonleap[:(i-1)]
          print('这是%d年的第%d天' %(year,(sum(month_days_nonleap_temp) + day)))
        
   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-24 17:42:11 | 显示全部楼层
temp1 = input("请输入年:")
temp2 = input("请输入月:")
temp3 = input("请输入日:")
s = 0

list1 = [31,28,31,30,31,30,31,31,30,31,30,31]
list2 = [31,29,31,30,31,30,31,31,30,31,30,31]

year = int(temp1)
month = int(temp2)
day = int(temp3)

if 0 < month <= 12 and 0< year and (day < list1[month-1]) or (day < list2[month-1]):
    print("当前输入日期为%s年%s月%s日" %(temp1,temp2,temp3))
    print('***' * 16)
    if (year%4 == 0 and year%100 != 0) or (year%400 == 0):
        s = sum(list2[:month-1]) + day
        print("这一天是这一年的第%s天." %(s))
    else:
        s = sum(list1[:month-1]) + day
        print("这一天是这一年的第%s天." %(s))

else:
    print("数据错误,请重新输入!")
    print("月份应小于等于12,日期应小于等于31,注意2月份最多只有29天!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-7 16:18:29 | 显示全部楼层
本帖最后由 小强工作室 于 2018-5-7 16:23 编辑

import datetime
year,month,day=int(input("请输入年:")),int(input("请输入月:")),int(input("请输入日:"))
print(list(datetime.datetime(year,month,day).timetuple())[-2])
2行代码解决
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-8 15:00:02 | 显示全部楼层
date = input('请输入年-月-日:')
year,month,day = date.split('-')
#print(year,month,day)
year = int(year)
month = int(month)
day = int(day)
ping = [31,29,31,30,31,30,31,31,30,31,30,31]
run = [31,28,31,30,31,30,31,31,30,31,30,31]
i = 0
days = 0
if year % 400 == 0 or ( year % 100 != 0 and year % 4 == 0 ) :
    while i < (month - 1) :
        days += run[i]
        i += 1
    days += day
else :
    while i < (month - 1) :
        days += ping[i]
        i += 1
    days += day
print(days)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-9 10:49:35 | 显示全部楼层
#未做日期输入错误判断


year = int(input("年:\n"))
month = int(input("月:"))
day = int(input("日:"))

montharr = [0,31,59,90,120,151,181,212,243,273,304,334]
montharr2 = [0,31,60,91,121,152,182,213,244,274,305,335]

if (year%100!=0 and year%4!=0) or (year%100==0 and year%400!=0):
    i= montharr[month-1]+day
else:
    i = montharr2[month - 1] + day

    print("这天是一年中的第%d天"%i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 14:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表