自带函数库的使用

1.日期函数

常用汇总

import datetime

now = datetime.datetime.now() # 此时此刻的日期+时间,2023-02-28 11:15:07.537283

weekday = datetime.datetime.now().weekday() # 今天周几,0 ~ 6分别表示周一 ~ 周日

now3h = datetime.datetime.now() + datetime.timedelta(hours=3) # 当前时刻+3小时,2023-02-28 14:07:30.214658

#时间与字符串的转换1
datestr1 = '2023-02-28T14:07:30.214658Z'
data_time1 = datetime.datetime.strptime(datestr1,"%Y-%m-%dT%H:%M:%S.%fZ")  # 2023-02-28 14:07:30.214658

#时间与字符串的转换2
datestr2 = '2023-02-28 14:07:30'
data_time2 = datetime.datetime.strptime(datestr2,"%Y-%m-%d %H:%M:%S") # 2023-02-28 14:07:30
datestr2 = '2023-02-28 14'
date_time2 = datetime.datetime.strptime(datestr2,"%Y-%m-%d %H") # 2023-02-28 14:00:00

#时间与字符串的转换3
date_time3 = datetime.datetime.now()
datestr3 = str(date_time3)

# 计算两个日期相差多少天
d1 = datetime.datetime(2023,2,1)
d2 = datetime.datetime(2023,2,28)
##print((d2-d1).days)

# 计算当前小时
time_str = "%Y-%m-%d %H"
current_time = datetime.datetime.now() # 2023-02-28 11:22:29.855603
date_time_str = current_time.strftime(time_str) # 2023-02-28 11
gt_time = datetime.datetime.strptime(date_time_str, time_str) # 2023-02-28 11:00:00

gt_week = current_time - datetime.timedelta(days = current_time.weekday()+7) # 上一周 2023-02-20 11:22:29.855603

import time
cur = datetime.datetime.now() # 2023-02-28 11:22:29.855603
cur = datetime.datetime.strftime(cur, "%Y-%m-%d") # 2023-02-28
cur = time.strptime(cur, "%Y-%m-%d") # time.struct_time(tm_year=2023, tm_mon=2, tm_mday=28, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=59, tm_isdst=-1)
print(cur.tm_year) # 2023
print(cur.tm_yday) # 返回的是当年的第几天,59

(1)回文日期

在这里插入图片描述
代码:

import datetime
n = input()
y = int(n[:4])
m = int(n[4:6])
d = int(n[6:])
date = datetime.date(y,m,d)
flag = True
for i in range(99999999):
    date += datetime.timedelta(days=1)
    strda = str(date).replace('-','')
    if flag:
        if strda[:]==strda[::-1]:
            flag=False
            print(strda)
    if strda[0]==strda[2]==strda[5]==strda[7] and strda[1]==strda[3]==strda[4]==strda[6]:
        print(strda)
        break

(2)跑步训练

在这里插入图片描述
代码:

import datetime
start = datetime.date(2000,1,1)
end = datetime.date(2020,10,1)
sum = 0
while start <= end:
    if start.day == 1 or start.weekday() == 0:
        sum += 2
    else:
        sum += 1
    start += datetime.timedelta(days=1)
print(sum)

datetime.date(XXXX,XX,XX).**weekday()**返回的是日期(XXXX,XX,XX)下是周几,0 ~ 6分别代表周一 ~ 周日

(3)顺子日期

在这里插入图片描述
解答代码:

import os
import sys

# 请在此输入您的代码
import datetime

d1 = datetime.date(2022,1,1)
d2 = datetime.date(2022,12,31)
day = datetime.timedelta(days=1)
# print(str(d.year)+str(d.month))
m=['012','123','234','345','456','567','678','789']
c=0
while d1<=d2:
    str1 = str(d1).replace('-','')
    for i in range(6):
        if str1[i:i+3] in m:
            c+=1
            break  # 只要有一个顺子,就可以退出啦!
    d1+=day
print(c)

2. set()函数

>>>x = set('runoob')
>>> y = set('google')
>>> x, y
(set(['b', 'r', 'u', 'o', 'n']), set(['e', 'o', 'g', 'l']))   # 重复的被删除
>>> x & y         # 交集
set(['o'])
>>> x | y         # 并集
set(['b', 'e', 'g', 'l', 'o', 'n', 'r', 'u'])
>>> x - y         # 差集
set(['r', 'b', 'u', 'n'])

(1)组队

在这里插入图片描述
在这里插入图片描述
代码:

s1 = [97,92, 0, 0,89,82, 0, 0, 0,95, 0, 0,94, 0, 0, 0,98,93, 0, 0]
s2 = [90,85, 0, 0,83,86, 0,97, 0,99, 0, 0,91,83, 0, 0,83,87, 0,99]
s3 = [ 0,96, 0, 0,97, 0, 0,96,89, 0,96, 0, 0,87,98, 0,99,92, 0,96]
s4 = [ 0, 0, 0,80, 0, 0,87, 0, 0, 0,97,93, 0, 0,97,93,98,96,89,95]
s5 = [ 0, 0,93,86, 0, 0,90, 0, 0, 0, 0,98, 0, 0,98,86,81,98,92,81]
li = []
for i in range(20):
    for j in range(20):
        for k in range(20):
            for l in range(20):
                for m in range(20):
                    if len(set([i,j,k,l,m])) == 5:
                        li.append(s1[i]+s2[j]+s3[k]+s4[l]+s5[m])
print(max(li))

  注意:使用append()函数来向list中添加元素。

3. itertools函数

常用汇总

itertools.combinations()
  来自 itertools 模块的函数 combinations(list_name, x) 将一个列表和数字 ‘x’ 作为参数,并返回一个元组列表,每个元组的长度为 ‘x’,其中包含x个元素的所有可能组合。列表中元素不能与自己结合,不包含列表中重复元素

itertools.permutations(str, b)
  连续返回由str元素生成的长度为b的全排列组合。

(1)七段码

在这里插入图片描述

import itertools
W = {'a':['b','f'],
     'b':['a','g','c'],
     'c':['b','g','d'],
     'd':['c','e'],
     'e':['d','g','f'],
     'f':['g','e','a'],
     'g':['b','c','e','f']
  }
total = []
for i in range(1,8):
  str1 = itertools.combinations('abcdefg',i)
  for j in str1:
    total.append(''.join(j))
num = 0
for str1 in total:
  for str2 in itertools.permutations(str1):
    for c in range(len(str2)-1):
      if str2[c+1] not in W[str2[c]]:
        break
    else:
      num+=1
      break
print(num)

4.sort()函数

在这里插入图片描述
解答代码:

str1 = 'WHERETHEREISAWILLTHEREISAWAY'
str2 = []
for c in str1:
  str2.append(c)
str2.sort()
for c in str2:
  print(c,end="")

sort()函数的用法

s = input()   # input()函数输入的是 str 类型数据,假设 s = 'bdca'
print(type(s))   # <class 'str'>
s.sort()   # 报错,AttributeError: 'str' object has no attribute 'sort'
s = list(s)   # 直接转为 list 类型,s = ['b', 'd', 'c', 'a']
print(type(s))   # <class 'list'>
s.sort()   # 排序, s = ['a', 'b', 'c', 'd']
print(s)
s1 = ''.join(s)   # s = 'abcd'
print(type(s1))   # <class 'str'>

sort()函数自定义排序key
在这里插入图片描述在这里插入图片描述

def shuweihe(x):
    s = str(x)
    ans = 0
    for c in s:
        ans += int(c)
    return ans
    
n = input()
m = int(input())
data = list(str(i+1) for i in range(int(n)))
data.sort(key=shuweihe)
print(data[m-1])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值