• 计算器


     1 #!/usr/bin/env python3
     2 import re
     3 def find1(ins):
     4     """
     5     查找最里面的()并计算,然后再重复查找()不断的计算,直到没有()
     6     :param ins:所需要运算的符号
     7     :return: 返回一个不带括号的运算
     8     """
     9     if not re.search(')+',ins) :#判断这个字符串中是否还有括号,没有则退出
    10         return ins
    11     t=ins.find(')')
    12     # print(t)
    13     # print(ins[t])
    14     flag=True
    15     num=t
    16     while flag:
    17         if ins[num] == '(':
    18             flag=False
    19             num1=num
    20             continue
    21         num = num - 1
    22     m=ins[num1:t+1] #切片字符串
    23     # print(m)
    24     ret=eval(m)
    25     # print(ret)
    26     ins2=ins.replace(m,str(ret))#将计算的结果代替()
    27     ret3=find1(ins2)#再重新找下一下()
    28     return ret3
    29 def check(args):
    30     if re.search(r'[^+-*/()0-9.]',args):#判断是否有数字+-*/().以后的非法字符
    31         return False
    32     if re.search('()|)(',args): #判断() )(则出错
    33         return False
    34     if re.search(r'(([*/])|([+-*/]))',args):#判断(*或(/ + - * /)则出错
    35         return False
    36     if re.search(r'.[+-*/().]',args):
    37         return False
    38     t1=re.findall(r'(',args)
    39     t2=re.findall(r')',args)
    40     if len(t1) != len(t2):
    41         return False
    42     return True
    43 ins1=input("please input str:")
    44 check_str=check(ins1)
    45 if check_str:
    46     ret100=find1(ins1)
    47     sum100 = eval(ret100)
    48     print(sum100)
    49 else:
    50     print("输入表达式出错")
     1 import re
     2 print(re.findall("abc","asdas abc"))
     3 print(re.findall("abc\b","asdasabc**"))
     4 print(re.findall(r'I','I MISS IOU'))
     5 print(re.findall("www.(baidu|laonanhai).com","sdad www.baidu.com"))
     6 print(re.findall("www.(?:baidu|laonanhai).com","sdad www.baidu.com"))#?:去掉优先捕获
     7 """
     8 运行结果:
     9 C:Python27python.exe H:/python17/day08/re1.py
    10 ['abc']
    11 ['abc']
    12 ['I']
    13 ['baidu']
    14 ['www.baidu.com']
    15 """
     1 str1='one13two2three3four4'
     2 regex=re.compile(r'd+')#以数字分割
     3 print(regex.split(str1))
     4 print(regex.findall(str1))
     5 t=re.search(r'd+',str1)
     6 # print(t.group())
     7 t2=re.match(r'd+',str1)
     8 print(t2)
     9 """
    10 ['one', 'two', 'three', 'four', '']
    11 ['13', '2', '3', '4']
    12 None
    13 """
    import re
    t=re.findall("com","COM",re.I)#re.I模式忽略大小写
    print(t)
    t1=re.findall(".","abc
    de")  
    print(t1)
    t2=re.findall(".","abc
    de",re.S) #re.S匹配特殊字符
    print(t2)
    
    """
    ['COM']
    ['a', 'b', 'c', 'd', 'e']
    ['a', 'b', 'c', '
    ', 'd', 'e']
    """
     1 a="123abc456"
     2 t=re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(0)
     3 print(t)
     4 t1=re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(1)
     5 print(t1)
     6 t2=re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(2)
     7 print(t2)
     8 t3=re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(3)
     9 print(t3)
    10 #=========
    11 """
    12 123abc456
    13 123
    14 abc
    15 456
    16 """
     1 print(re.sub("g.t","have",'I get A,I got B,I gut C'))
     2 print(re.sub("g.t","have",'I get A,I got B,I gut C',2))
     3 print(re.subn("g.t","have",'I get A,I got B,I gut C')) #可以计数到底被替换了多少次
     4 
     5 text="JGood is a handsome boy,he is cool,clever,and so "
     6 regex = re.compile(r'w*oow*')#查找所有包含'oo'的单词
     7 print(regex.findall(text))
     8 """
     9 I have A,I have B,I have C
    10 I have A,I have B,I gut C
    11 ('I have A,I have B,I have C', 3)
    12 ['JGood', 'cool']
    13 """
    元字符
     
    说明
     
    
    .
     
    代表任意字符
     
    |
     
    逻辑或操作符
    
    
    [ ]
     
    匹配内部的任一字符或子表达式
     
    
    [^]
     
    对字符集和取非
     
    -
     
    定义一个区间
     
    
    
     
    对下一字符取非(通常是普通变特殊,特殊变普通)
     
    *
     
    匹配前面的字符或者子表达式0次或多次
     
    *?
     
    惰性匹配上一个
     
    +
     
    匹配前一个字符或子表达式一次或多次
     
    
    +?
     
    惰性匹配上一个
     
    
    ?
     
    匹配前一个字符或子表达式0次或1次重复
     
    
    {n}
     
    匹配前一个字符或子表达式
     
    {m,n}
     
    匹配前一个字符或子表达式至少m次至多n次
     
    {n,}
     
    匹配前一个字符或者子表达式至少n次
     
    
    {n,}?
     
    前一个的惰性匹配
     
    ^
     
    匹配字符串的开头
     
    A
     
    匹配字符串开头
     
    $
     
    匹配字符串结束
     
    []
     
    退格字符
     
    c
     
    匹配一个控制字符
     
    d
     
    匹配任意数字
     
    
    D
     
    匹配数字以外的字符
     
    	
     
    匹配制表符
     
    w
     
    匹配任意数字字母下划线
     
    W
     
    不匹配数字字母下划线
  • 相关阅读:
    封装组件集合
    Vue组件封装(以封装一个button组件为例)
    Spark权威指南读书笔记(四) 聚合与连接
    leetcode刷题笔记一百三十五题 分发糖果
    leetcode刷题笔记一百三十四题 加油站
    leetcode刷题笔记一百三十三题 克隆图
    leetcode刷题笔记一百三十一与一百三十二题 分割回文串与分割回文串II
    leetcode刷题笔记一百三十题 被围绕的区域
    leetcode刷题笔记一百二十九题 求根到叶子节点数字之和
    leetcode刷题笔记一百二十八题 最长连续序列
  • 原文地址:https://www.cnblogs.com/wang43125471/p/7629129.html
Copyright © 2020-2023  润新知