1、编程计算两个日期之间的天数与周数

Python时间处理---dateutil模块

dateutil模块主要有两个函数,parser和rrule。

其中parser是根据字符串解析成datetime,而rrule则是根据定义的规则来生成datetime。

 import datetime
from dateutil import rrule class BetweenDate:
def __init__(self,start,stop):
self.start = datetime.datetime.strptime(start,"%Y,%m,%d")
self.stop = datetime.datetime.strptime(stop,"%Y,%m,%d")
def Betdays(self):
d = rrule.rrule(rrule.DAILY,dtstart=self.start,until=self.stop).count()
return d if d > 0 else False
def Betweeks(self):
w = rrule.rrule(rrule.WEEKLY,dtstart=self.start,until=self.stop).count()
return w if w > 0 else False time = BetweenDate('2020,1,14','2020,7,17')
days = time.Betdays()
weeks = time.Betweeks()
print('日期间隔天数:',days)
print('日期间隔周数:',weeks) 结果:
日期间隔天数: 186
日期间隔周数: 27

  time模块操作归纳

操作 作用

例子

time.time() 打印当前时间(结果为浮点数)

a = time.time()

结果:1595468499.5463095

time.localtime() 浮点数--->时间结构体

b=time.localtime(a)

结果:time.struct_time(tm_year=2020, tm_mon=7, tm_mday=23, tm_hour=9, tm_min=43, tm_sec=7, tm_wday=3, tm_yday=205, tm_isdst=0)

time.asctime() 时间结构体--->时间字符串

c=time.asctime(b)

结果:'Thu Jul 23 09:43:07 2020'

time.strftime() 时结构体--->指定格式时间字符串

d=time.strftime("%Y-%m-%d %H:%M:%S",b)

结果:'2020-07-23 09:43:07'

time.strptime() 时间字符串--->时间结构体

e=time.strptime(d,"%Y-%m-%d %H:%M:%S")

结果:time.struct_time(tm_year=2020, tm_mon=7, tm_mday=23, tm_hour=9, tm_min=43, tm_sec=7, tm_wday=3, tm_yday=205, tm_isdst=-1)

对于结构体中元素的说明:

  1. tm_year:年
  2. tm_mon:月
  3. tm_mday:日
  4. tm_hour:小时
  5. tm_min:分
  6. tm_sec:秒
  7. tm_yday:一周中的索引([0,6],周一的索引是0)
  8. tm_day:一年中的索引([1,366])
  9. tm_isdist:1 if summer time is in effect, 0 if not, and -1 if unknown

2、编写程序用于判断学生的作业是否做完

 class Student:
def __init__(self,name,grade,subject):
self.name = name
self.grade = grade
self.subject = subject
def do_work(self,time):
if self.grade>3 and time > 2:
return True
elif self.grade<3 and time < 0.5:
return True
else:
return False
class Teacher:
def __init__(self,name,subject):
self.name = name
self.subject = subject
def evaluate(self,result):
if result:
return "You are great."
else:
return "You sholud work hard!" stu_zhangshan = Student('zhangshan',5,'math')
tea_wang = Teacher('wang','math')
resu = stu_zhangshan.do_work(1)
tea_said = tea_wang.evaluate(resu)
print(tea_said) 结果:
You sholud work hard!

3、筛选素数

 import math
def is_prime(m):
if m<=1:
return '不是素数'
for i in range(2,int(math.sqrt(m))+1):
if m%i==0:
return '不是素数'
return '素数' def choice_prime(*args):
primes = [i for i in args if is_prime(i)=='素数']
return primes print(choice_prime(1,2,3,4,5,6,7,8,9)) 结果:
[2, 3, 5, 7]

4、使用函数求斐波那切数列

 def fibs(n):
result=[0,1]
for i in range(n-2):#由于数列前两项已知,故只需求后n-2项即可
result.append(result[-1]+result[-2])
return result print(fibs(10)) 结果:
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

使用类和迭代器实现斐波那切数列

 # 使用类和迭代器实现斐波那切数列
class Fibs():
def __init__(self,max):
self.max = max
self.a = 0
self.b = 1
def __iter__(self):
return self
def __next__(self):
fib = self.a
if fib > self.max:
raise StopIteration
else:
self.b, self.a = self.a + self.b, self.b
return fib fibs = Fibs(100000) #不会占用太多内存空间
lst = [fibs.__next__() for i in range(10)]
print(lst)
'''
结果:
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
'''

使用生成器实现斐波那切数列

 def fibs():
a,b = 0,1
while True:
yield a
b,a = a + b, b
#生成一个生成器
f = fibs() #此时已经无限多个菲波那切数列预存到生成器,使用时将所需的元素督导内存即可 import itertools
lst = list(itertools.islice(f,10))
print(lst) '''
结果:
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
'''

5、输入字符串,转成成数字形式求和

eval("34-23")  #结果:11

 s='  44+ 34'
s=s.strip().split('+')
print(s)
n=0
for i in s:
n=n+int(i)
print(n) 结果:
['', '']
78

6、对输入的字母大小写进行变换,即小写转大写,大写转小写

list-->str用join()

str-->list表用split()

 def fun(s):
# l = []
# for i in s:
# if i == i.upper():
# l.append(i.lower())
# else:
# l.append(i.upper())
l = [i.lower() if i==i.upper() else i.upper() for i in s]
return "".join(l) print(fun('Hello')) 结果:
hELLO

与'Hello'.swapcase()作用类似,可参见字符串的基本内容

7、提取字符串中的所有元音字母

translate()方法

ord() 函数与chr()函数

a = ord('a')   #结果:97
b = chr(97)    #结果:a

 class Keeper:
def __init__(self,keep):
self.keep = set(map(ord,keep))
def __getitem__(self,n):
if n not in self.keep:
return None
else:
return chr(n)
def __call__(self,a):
return a.translate(self) vowels = Keeper("aeiou")
result = vowels("Cherry is beautiful!")
print(result) #结果:'eieauiu'

8、年、月的日历图,并判断是否为闰年

 import calendar
from datetime import date
mydate = date.today() #结果:datetime.date(2020, 7, 22)
print(calendar.calendar(2020)) #打印年的日历图
print(calendar.month(mydate.year,mydate.month)) #打印月的日历图 结果:
年的日历图:
2020 January February March
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 5 1 2 1
6 7 8 9 10 11 12 3 4 5 6 7 8 9 2 3 4 5 6 7 8
13 14 15 16 17 18 19 10 11 12 13 14 15 16 9 10 11 12 13 14 15
20 21 22 23 24 25 26 17 18 19 20 21 22 23 16 17 18 19 20 21 22
27 28 29 30 31 24 25 26 27 28 29 23 24 25 26 27 28 29
30 31 April May June
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 5 1 2 3 1 2 3 4 5 6 7
6 7 8 9 10 11 12 4 5 6 7 8 9 10 8 9 10 11 12 13 14
13 14 15 16 17 18 19 11 12 13 14 15 16 17 15 16 17 18 19 20 21
20 21 22 23 24 25 26 18 19 20 21 22 23 24 22 23 24 25 26 27 28
27 28 29 30 25 26 27 28 29 30 31 29 30 July August September
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 5 1 2 1 2 3 4 5 6
6 7 8 9 10 11 12 3 4 5 6 7 8 9 7 8 9 10 11 12 13
13 14 15 16 17 18 19 10 11 12 13 14 15 16 14 15 16 17 18 19 20
20 21 22 23 24 25 26 17 18 19 20 21 22 23 21 22 23 24 25 26 27
27 28 29 30 31 24 25 26 27 28 29 30 28 29 30
31 October November December
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 1 1 2 3 4 5 6
5 6 7 8 9 10 11 2 3 4 5 6 7 8 7 8 9 10 11 12 13
12 13 14 15 16 17 18 9 10 11 12 13 14 15 14 15 16 17 18 19 20
19 20 21 22 23 24 25 16 17 18 19 20 21 22 21 22 23 24 25 26 27
26 27 28 29 30 31 23 24 25 26 27 28 29 28 29 30 31
30 月的日历图:
July 2020
Mo Tu We Th Fr Sa Su
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

判断是否是闰年

 import calendar
from datetime import date
mydate = date.today() #结果:datetime.date(2020, 7, 22)
is_leap = calendar.isleap(mydate.year)
print(("{}是闰年" if is_leap else "{}不是闰年").format(mydate.year)) 结果:
2020是闰年

9、创建数据字典的3中方法

 dict(a='',b='')

 dict(zip(['a','b'],[1,2]))

 dict([('a',1),('b',2)])

 结果:{'a': 1, 'b': 2}

10、创建不可修改的集合

frozenset和set的区别

 a = [1,4,2,3,1]
a_set = set(a)
a_frozenset = frozenset(a)
print(a_set) #结果:{1, 2, 3, 4}
print(a_frozenst) #结果:frozenset({1, 2, 3, 4}) #增加--add()、update()
print(a_set.add(13) ) #结果:{1, 2, 3, 4, 13}
print(a_set.update('hello')) #结果:{1, 2, 3, 4, 'e', 'h', 'l', 'o'} #删除--remove()、“-=”
print(a_set.remove('h')) #结果:{1, 2, 3, 4, 'e', 'l', 'o'}
print(a_set -= set('elo')) #结果:{1, 2, 3, 4} #删除集合
del a_set

11、同时做幂、余运算

pow()的三个参数全部给出时表示先进行幂运算在进行取余运算

 print(pow(3,3))        #结果:9
print(pow(3,3,4)) #结果:1

12、查看变量所占字节数

 import sys
a = [1,4,2,3,1]
print(sys.getsizeof(a)) #结果:104

13、排序函数

默认升序排列,reverse = True表示降序排列

 a = [1,4,2,3,1]
print(sorted(a,reverse=True)) #结果:[4, 3, 2, 1, 1] b = [{'name':'xiaoming','age':18,'gender':'male'},
{'name':'xiaohong','age':20,'gender':'female'}]
#按照age的降序排列
print(sorted(b,key =lambda x:x['age'],reverse=True)) 结果:
[{'name': 'xiaohong', 'age': 20, 'gender': 'female'}, {'name': 'xiaoming', 'age': 18, 'gender': 'male'}]

14、判断真假

(1)all---->如果可迭代对象元素全为真,返回True,否则返会False

(2)any--->可接受一个可迭代对象,如果迭代对象里至少有一个元素为真,就返回True

 print(bool(0))          #结果:False
print(all([0,1,2,3])) #结果:False
print(any([0,1,2,3])) #结果:True

15、字符串格式化

 print("I am {0},age {1}".format('Cherry',''))#结果:I am Cherry,age 18

 #保留小数点后两位
print("{:.2f}".format(3.1415926)) #结果:3.14 #带符号保留小数点后两位
print("{:+.2f}".format(-1)) #结果:3-1.00 #不带小数位
print("{:.0f}".format(9.5678)) #结果:10 #以整数进行补0,在左边进行填充,其宽度为4---->可改变填充方向以及宽度
print("{:0>3d}".format(7)) #结果:007 #以逗号的形式分割数字字符
print("{:,}".format(9876543210)) #结果:9,876,543,210 #指数计数
print("{:2e}".format(9876543210)) #结果:9.876543e+09 #百分比格式
print("{:.2%}".format(0.678)) #结果:67.800%

16、读写文件

 #打开文件
import os
os.chdir('C:\\Users\\xhl\\Desktop\\ww')
print(os.listdir()) #结果:['a.txt'] #读文件
with open('a.txt',mode='r',encoding='utf8') as f:
o = f.read()
print(o)
结果:数据放好多假货常委会发货单黄齑淡饭就很好父亲和如何按厚度复活甲横槊赋诗 #写文件
with open('new_file.csv',mode='w',encoding='utf8') as f:
w = f.write('I love python\nI am beautiful')
print(os.listdir()) #结果:['a.txt', 'new_file.csv'] with open('new_file.csv',mode='r',encoding='utf8') as f:
print(f.read())
#结果:
I love python
I am beautiful
mode取值表
'r' 读取(默认情况)
'w' 写入,并先截断文件
'x' 排它性创建,如果文件已存在则失效
'a' 写入,如果文件存在则在末尾追加
'b' 二进制模式
't' 文本模式(默认情况)
'+' 打开用于更新(读取与写入)

17、链式操作

 from operator import add,sub
def add_or_sub(a,b,oper):
return (add if oper=="+" else sub)(a,b)
print(add_or_sub(3,4,'+')) #结果:7

18、提取文件后缀名、完整文件名

os.path.splitext()---->提取文件后缀名

os.path.split()---->提取完整文件名

其结果是tuple类型

 #提取后缀名
import os
os.chdir('C:\\Users\\xhl\\Desktop\\ww') #结果:['a.txt', 'new_file.csv']
print(os.path.splitext('C:\\Users\\xhl\\Desktop\\ww\\a.txt'))
#结果:('C:\\Users\\xhl\\Desktop\\ww\\a', '.txt') #提取完整文件名
print(os.path.split('C:\\Users\\xhl\\Desktop\\ww\\a.txt')[-1])
#结果:'a.txt'

19、将list等分成n组

ceil()--->向上舍入最为最接近的函数

 from math import ceil
def divide_iter(lst,n):
if n<=0:
yield lst
return
i,div = 0, ceil(len(lst)/n)
while i<n:
yield lst[i*div:(i+1)*div]
i+=1 for group in divide_iter([1,2,3,4,5,6,7],3):
print(group) 结果:
[1, 2, 3]
[4, 5, 6]
[7]

20、python常用操作符总结(好用易忽略)

符号 用途 例子
/ 返回浮点数 8/5--->1.6
// 返回两数相除的整除部分 8/5--->1
% 返回两数相除的余数 8%5--->3
** 计算几次方 2*3--->8
_ 交互模式下,上一次打印的表达式的值被赋值给变量_

2+3---->5

_+3---->8

““ 打印串时无需转义字符

print("I'm a boy")

结果:I'm a boy

'' 打印串时需转义字符

print('I\'m a boy')

结果:I'm a boy

一对双引号:

即"""或'''

跨行自动连续输入字符串

print("""yiduhdsjhjdj
hhhhhhhhhhhh""")

结果:yiduhdsjhjdj
hhhhhhhhhhhh

python小题目汇总的更多相关文章

  1. Python小问题汇总

    现在的时间适合写点最近的小总结,这中间涉及到python/git等问题,我就从python先说起吧. 一.Python 1. Python的异常处理 因为想到自己不断尝试写小程序的话会用到抛出异常信息 ...

  2. Python面试题目--汇总

    原文链接-https://github.com/taizilongxu/interview_python Python语言特性 1 Python的函数参数传递 2 Python中的元类(metacla ...

  3. python小题目练习(13)

    题目:封装用户的上网行为 实现代码: """Author:mllContent:封装用户的上网行为Date:2020-01-19"""def ...

  4. python小题目练习(五)

    题目:Python实现快速排序 代码实现: """Author:mllContent:Python实现快速排序Date:2020-11-05""&qu ...

  5. python小题目练习(四)

    题目:JAVA和Python实现冒泡排序 实现代码: # Java实现对数组中的数字进行冒泡排序scoreList = [98, 87, 89, 90, 69, 50]temp = 0for i in ...

  6. python小知识点汇总

    一 写mysql 场景:自动化用例中需要构造数据,写入redis 表中已有该primary_key的记录,在现有基础上更新字段 表中无该记录,需要插入 # 请求传入table字段,db.table,c ...

  7. python小题目练习(一)

    题目:输出1+2+3+4+5+--+100的总数,并打印出这行式子 代码展示:# 1.定义一个初识变量total,用于后面每次循环进行累加值 total = 0# 2.利用for循环遍历累加for i ...

  8. python小题目练习(十二)

    题目:如下图所示 代码展示: """Author:mllContent:春节集五福Date:2020-01-17"""import rand ...

  9. python小题目练习(十一)

    题目:大乐透号码生成器 需求:使用Random模块模拟大乐透号码生成器,选号规则为:前区在1 ~ 35的范围内随机产生不重复 的5个号码,后区在1~ 12的范围内随机产生不重复的2个号码.效果如图8. ...

随机推荐

  1. Oracle Solaris 11.4安装桌面/gdb

    文章目录 1. 说明 2. 挂载镜像 3. 安装桌面 4. 安装gdb 5. 重启OS 1. 说明 该文承接上文Solaris 11.4安装,映像包管理系统(IPS)搭建. Solaris 11.4的 ...

  2. mssql 手工注入流程小结

    对于MSSQL的注入点,无外乎这三种权限:SA,DB_OENER,PUBLIC.SA(System Admin)权限我们可以直接执行命令,DB_OENER权限的话,我们可以找到WEB的路径,然后用备份 ...

  3. JVM类加载机制小结

    这篇文章我们关注一个问题:Java程序是怎么进入JVM并执行的?经常写Java程序的小伙伴应该都听说过类加载机制,在<深入理解Java虚拟机>里周老师已经讲的很清楚了,这篇随笔把之前的笔记 ...

  4. 每日一题 - 剑指 Offer 38. 字符串的排列

    题目信息 时间: 2019-06-29 题目链接:Leetcode tag:深度优先搜索 回溯法 难易程度:中等 题目描述: 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个 ...

  5. 20 个 CSS高级样式技巧汇总

    使用技巧会让人变的越来越懒,没错,我就是想让你变懒.下面是我收集的CSS高级技巧,希望你懒出境界. 1. 黑白图像 这段代码会让你的彩色照片显示为黑白照片,是不是很酷? img.desaturate ...

  6. ubuntu docker安装与部署java,mysql,nginx镜像

    docker 安装与部署java,mysql,nginx docker 配置 安装docker $ sudo apt-get remove docker docker-engine docker.io ...

  7. ASP.NET MVC Route详解

    在MVC3.0版本的时候,微软终于引入了第二种模板引擎:Razor.在这之前,我们一直在使用WebForm时代沿留下来的ASPX引擎或者第三方的NVelocity模板引擎.Razor在减少代码冗余.增 ...

  8. html2canvas截图问题,图片跨域导致截图空白

    年前的一个项目,要做一个H5截屏分享的功能,使用的是html2canvas插件,截图功能是实现了,但是跨域的图片死活不出来, 经过几天谷歌百度和不断的尝试,终于找到解决办法了,一共经历了让人心力憔悴的 ...

  9. shell进阶篇之字典和数组结合应用案例

    # 现在我们用字典结合数组来实现一个简单的远程管理机 远程管理机的需求:现在需要在一个管理机上实现下列两点内容: 1.需要可以实时查看现有项目运行状态 2.远程登陆任意一台机器 备注:现有的机器如下 ...

  10. 浅析Python垃圾回收机制!

    Python垃圾回收机制 目录 Python垃圾回收机制 1. 内存泄露 2. Python什么时候启动垃圾回收机制? 2.1 计数引用 2.2 循环引用 问题:引用计数是0是启动垃圾回收的充要条件吗 ...