python学习03

#只要写递归函数,必须要结束条件
#不要只看return就认为已经返回了,要看返回的操作是在递归到第几层的时候发生的,然后返回给了谁。
# 如果不是返回给最外层函数,调用者就接收不到
#循环  递归
#斐波拉契数列 1,1 ,2,3,5,8
def fib(n):
    if n==1 or n==2:
        return 1
    return fib(n-1)+fib(n-2)
    #fib(n)=fib(n-1)+fib(n-2)
#阶乘
def fac(n):
    if n==1:
        return 1
    return n*fac(n-1)
#模块 re模块  正则表达式 操作它 字符串匹配 规则
import  time
while True:
    phone_number=input('please input your phone number:')
    if len(phone_number)==11\
        and phone_number.isdigit()\
        and (phone_number.startwith('13')\
            or phone_number.startswith('14')\
            or phone_number.startswith('15') \
             or phone_number.startswith('18') \
             or phone_number.startswith('19')):
        print('是合法的手机号码')
    else:
        print('bu是合法的手机号码')
 import re
 phone_number=input('please input your phone number: ')
 if re.match('~(13|14|15|18|19)[0-9]$',phone_number):
       print('是合法的手机号码')
 else:
       print('bu是合法的手机号码')
#[1234567890]中括号字符组   【0-9】[4-9][a-z][A-Z][A-Za-z0-9][A-z]
b 7704974726905
ret=re.findall('[a-z]','eva agon yuan')#返回所有满足条件的
print(ret)
ret=re.search('[a-z]','eva agon yuan')#从前往后找到一个就返回,
# 返回的结果需要调用group才能拿到结果  如果没有找到,那么返回None,调用group会报错
print(ret)
print(ret.group())
if ret:
    print(ret.group())
#match是从头开始匹配,如果正则规则可以从头开始匹配上,就返回一个变量,匹配
# 的内容也需要用group返回结果
ret=re.match('[a-z]','eva agon yuan')
if ret:
    print(ret.group())
ret=re.split('[ab]','abcd')
#先按‘a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割
print(ret)#['','','cd']
ret=re.sub('\d','H','eva3egon4yuan4',1)#将数字替换成'H' 参数1表示替换1个
print(ret)
ret=re.subn('\d','H','eva3egon4yuan4')#将数字替换成'H' 返回元组(替换的结果,替换了多少次)
print(ret)
obj=re.compile('\d{3}')
#将正则表达式编译成一个正则表达式对象,规则要匹配的是3个数字
ret=obj.search('abc123eeee')#正则表达式对象调用search,参数为待匹配的
print(ret.group())#结果:123
import re
ret=re.finditer('\d','ds3sy4784a')#finditer返回一个存放匹配结果的迭代器
print(ret)
print(next(ret).group())#查看第一个结果
print(next(ret).group())#查看第2个结果
print([i.group() for i in ret])#查看剩余的左右结果
import re
re.search('~[1-9]\d{14}(\d{2}[0-9x)?$','1110202002002002')
print(ret.group())
re.search('~[1-9](\d{14})(\d{2}[0-9x)?$','1110202002002002')
print(ret.group(1))
#,*?惰性匹配
re search
ret=re.findall(r"\d+\.\d+|(\d+)","1-2*(60+(-40.35/5-(-4*3))")
print(ret)
ret.remove('')
#首先得到一个字符
#去空格
#没有空格的字符串
#先算最里层括号里的:找括号 且括号里没有其他的括号
#得到一个没有括号的表达式:只有加减乘除 从左到右先找到第一个乘除法
# collection模块 在内置数据类型(dict,list,set,tuple)的基础上,
# collections模块还提供了几个额外的数据类型:counter,deque,defaultdict,namedtuple和orderedDiccccct
# 1.namedtuple:生成可以使用名字来访问元素内容的tuple
# 2.deque:双端队列,可以快速的从另外一侧追加和推出对象
# 3.Counter:计数器,主要用来计数
# 4.OrderedDict:有序字典
# 5.defaultdict:带有默认值的字典
from collections import  namedtuple
Point=namedtuple('point',['x','y'])
p=Point(1,2)
print(p.x)
print(p.y)
circlre=namedtuple('circle',['x','y','z'])
import queue
q=queue.Queue()
q.put(10)
q.put(18)
print(q.get())
print(q.qsize())
from collections import deque
deque.append()#从后面放数据
deque.appendleft()#从前面放数据
deque.pop()#从后面取数据
deque.popleft()#从前面取数据
dq=deque([1,2])
dq.append('a') #[1,2,'a']
dq.appendleft('b')#['b',1,2,'a']
dq.insert(2,3)#['b',1,3,2,'a']index是2的位置加3
print(dq.pop())
values=[11,22,33,44,55,66,77,88,99,90]
my_dict={ }
for value in values:
    if value > 66:
        if my_dict.has_key('k1'):
           my_dict['k1'].append(value)
        else:
            my_dict['k1']=[value]
    else:
        if my_dict.has_key('k2'):
            my_dict['k2'].append(value)
        else:
            my_dict['k2']=[value]
from collections import defaultdict
values=[11,22,33,44,55,66,77,88,99,90]
my_dict=defaultdict(list)#cabble
for value in values:
    if value > 66:
        my_dict['k1'].append(value)
    else:
            my_dict['k2'].append(value)
from collections import defaultdict
dd=defaultdict(lambda :'N/A') #lambda:5
dd['key1']='abc'
dd['key1']#'abc'
dd['key2']#'N/A'

import time
time.sleep()
time.time()#从1970经理的时间
#格式花时间:字符串人看
print(time.strftime("%Y-%m-%d %X")) #stringformat
print(time.strftime("%Y-%m-%d %H:%M:%S"))
print(time.strftime("%Y-%m-%d %a %H:%M:%S"))
#时间戳时间:float计算机
#结构化时间:计算
struct_time=time.localtime()
print(struct_time)
print(struct_time.tm_year)
import time
#时间戳和结构化时间
t=time.time()
print(time.localtime(t))
print(time.gmtime(t))
print(time.striptime('2000-12.31','%Y-%m.%d'))
print(time.strftime('%m/%d/%Y %H:%M:%S',time.localtime(30000000000)))
import os
print(os.getcwd())
os.chdir(r'C:\User\Administrator\PycharmProjects')
print(os.getcwd())
os.curdir('..')
os.pardir
os.makedirs('dirname/dirname2')
os.removedirs('dirname1')
os.listdir()
os.sep
os.name
os.system("dir")
ret=os.popen("dir").read()
print(ret)
os.environ
os.path.split(os.getcwd())
os.path.dirname(path)
import sys
sys.platform
sys.path
sys.argv

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落雪snowflake

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值