括号

python实现简单的计算器功能

南笙酒味 提交于 2019-11-29 13:46:13
如想实现一个计算器的功能,输入格式为字符串,不能运用python里面的内置方法,出去简单的加减乘除,设计一个相对高级的计算器: a = '1 - 2 * ( ( 6 0 -3 0 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )'# 去掉所有的空格# 加减乘除 括号# 先算括号里的乘除,再算括号里的加减主要利用正则表达式来实现,具体代码如下: import re a = '1 - 2 * ( ( 6 0 -3 0 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )' res_brackets = re.compile(r'\([^\(\)]*\)') # 寻找带括号的(最内层的括号) express = a.replace(' ','') def dealwith(exp): ''' deal with the formula :param exp: del_brackets data :return: ''' exp = exp.replace('+-', '-') exp = exp.replace('--', '+') return exp def add(exp): data =

BracketHighlighter括号高亮配置

岁酱吖の 提交于 2019-11-29 13:18:29
BracketHighlighter BracketHighlighter是一个用于成对括号(大括号、中括号、圆括号、尖括号)、引号等符号的高亮显示的插件 插件安装 首先打开package Control,选择install Package,之后输入BracketHighlighter,点击就可以了。 在安装完成之后,默认是这样显示的 默认其实已经比较好看了,但是还是不够好,按照下面的设置看看吧 点击Preference -> Package setting -> BracketHighlighter -> Bracket setting 把下面的复制粘贴到右边的用户设置中去 { // 这个是在成对的括号左侧显示一条竖线,表明开闭括号的范围与位置,如果不需要把true改为false “content_highlight_bar”: true, // 下面不同括号的显示方式,默认是下划线,这里改成了高亮 “bracket_styles”: { “default”: { “icon”: “dot”, “color”: “region.yellowish brackethighlighter.default”, “style”: “highlight” }, “unmatched”: { “icon”: “question”, “color”: “region.redish”,

python爬虫随记

我与影子孤独终老i 提交于 2019-11-29 12:26:13
提取大的条目://li[contains(@class," j_thread_list clearfix")] python安装路径:C:\Users\17809\AppData\Local\Programs\Python\Python36 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题 越过反爬用requests.post请求,把模仿的ajax请求传过去,跟get用法一样 用xpath需要用etree.HTML对response.text进行处理,正则不用 类型是字符串的用re正则表达式,是json的可以直接按字典或列表处理 split分割字符串,分割后的是一个列表 由于requests模块是一个不完全模拟浏览器行为的模块,只能爬取到网页的HTML文档信息, 无法解析和执行CSS、JavaScript代码,因此需要我们做人为判断; selenium模块本质是通过驱动浏览器,完全模拟浏览器的操作 ,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器; 由于selenium解析执行了CSS、JavaScript所以相对requests它的性能是低下的; 滚动下拉模仿处理ajax,跟requests请求ajax两种方式 Redis,、MongoDB scrapy中yield的功能:

[Leetcode] 32.最长有效括号

会有一股神秘感。 提交于 2019-11-29 11:39:30
[Leetcode] 32.最长有效括号 关键词:DP,动态规划,动规。 最近在刷DP专栏的题目,这是其中一道题。 给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。 longest-valid-parentheses Sample1 输入: "(()" 输出: 2 解释: 最长有效括号子串为 "()" Sample2 输入: ")()())" 输出: 4 解释: 最长有效括号子串为 "()()" 对于DP嘛,首先还是需要抽象出状态函数: dp[i] 表示:以 S[i] 结尾的,最长有效括号串的长度。 然后是状态转移方程: 如果 s.len == 0 or s.len == 1,那么返回 0 . 否则: if s[i]=='(' then dp[i]=0 if s[i]==')' then: if s[i-1]='(' then dp[i] = dp[i-2] + 2 (数组下标是否越界,即 i>=2? ) if s[i-1]=')' then: if s[i-dp[i-1]-1] == '(' then dp[i] = dp[i-dp[i-1]-2] + dp[i-1] + 2 (是否越界?) if s[i-dp[i-1]-1] == ')' then dp[i] = 0 第一个 if 语句表示:形如 ....( 这样的字符串,是必然不合法的。

58同城前端笔试

别说谁变了你拦得住时间么 提交于 2019-11-29 10:28:50
1.GET 和 POST安全性比较与讨论 两者最基本区别 GET请求通过URL(请求行)提交数据,在URL中可以看到所传参数。POST通过“请求体”传递数据,参数不会在url中显示 GET请求提交的数据有 长度限制 ,POST请求没有限制。 GET请求返回的内容可以被浏览器缓存起来。而每次提交的POST,浏览器在你按 下F5的时候会跳出确认框,浏览器不会缓存POST请求返回的内容。 GET对数据进行查询,POST主要对数据进行增删改!简单说, GET是只读 ,POST是写。 不同观点 我认为 post,更安全 一些,因为get传输方式将在URL中显示参数,更容易引发一些“不怀好意”人的兴趣,例如上边出现了username和userpwd等特殊字符时,更容易给他们一些兴趣。虽然可以编码,当是也是可以解码的。而post则对方看不见,即使一些高手截获这些信息,也需要它筛选还有解码,相对来说比get方法更加安全。当然是没有绝对的安全的。 HTTP协议中提到GET是安全的方法(safe method),其意思是说GET方法不会改变服务器端数据,所以不会产生副作用。如果是该用POST的地方用了GET,又说GET不安全,那GET也太冤枉了。也就是说,只要我们正确选择使用GET和POST,那么GET是安全的。 只要我们正确使用二者,因为GET方法中不对数据进行修改,不传送一些保密的信息

函数基础重点掌握内容:创建函数、return返回单个值、return返回多个值、函数名加括号与不加括号的区别

北战南征 提交于 2019-11-29 10:25:43
##比较两个数大小 #有参函数!!! def compare(s,t): if s > t: print(s) else: print(t) f=compare compare(1000,30) f(1800,30) """有几个参数传几个参数,形参对应实参,一个也不能少""" ''' 2.函数名加括号与不加括号的区别: 函数名加括号与不加括号的区别: --在这个函数中,return返回的是inner, 内部其实是返回inner函数的运行结果 100。 然后通过执行outer()函数,得到结果。 --而加括号outer()表示运行这个函数,得到运行结果。 ''' #闭包函数 def outer(): x=100 def inner(): print(x) return inner fun=outer() fun() '''重点掌握!!什么是返回值?return的作用是什么?''' #对比一 def func(): name = '鲁dundun' return name #这种方式终端不能打印出 鲁dundun func() #对比二 def func(): name = '鲁dundun' print(name) # 这种方式终端完全可以打印出 鲁dundun func() # 对比三 def func(): name = 'nick' return name func() ''

(18)Go栈思想解决括号匹配问题

强颜欢笑 提交于 2019-11-29 06:35:39
栈是一种先进后出的数据结构 思路:遍历字符串,如果是左括号则放进栈中,如果是右括号则从栈中推出元素,看两者是否匹和, 如果均匹和且栈中为空,返回true // 时间复杂度为O(n) // 空间复杂度为O(n) func isValid2(s string) bool { m := make(map[byte]byte) m['('] = ')' m['['] = ']' m['{'] = '}' // 数组实现栈功能 sli := make([]byte, 0) if len(s) == 0 { return true } if len(s)%2 == 1 { return false } for i, b := range s { if i == 0 && (s[i] == ')' || s[i] == ']' || s[i] == '}') { return false } if b == '(' || b == '[' || b == '{' { sli = append(sli, byte(b)) } else { // 这里实现栈的功能 left := sli[len(sli)-1] sli = sli[:len(sli)-1] if m[left] != byte(b) { return false } } } if len(sli) != 0 { return

P3190 [HNOI2007]神奇游乐园

谁都会走 提交于 2019-11-29 05:36:07
传送门 第一道插头 $dp$ 由于讲不清楚所以假装各位早就会插头 $dp$ 了 首先要的是一个闭合回路,所以可以用括号表示法表示状态,然后大力分类讨论 $1.$ 没有右插头和下插头 那么我们可以啥也不干,或者加一个右插头和下插头 $2.$ 只有下插头没有右插头 那么我们可以要把下插头继续延伸,可以向下或者向右 $3.$ 只有右插头没有下插头: 同理我们可以往下或者往右延伸 $4.$ 右插头和下插头都有:这个又要分情况讨论   $a.$ 插头都是左括号,那么要把两个联通还要把右边原来匹配的右括号改成左括号       $b.$ 插头都是右括号,那么要把两个联通还要把左边原本匹配的左括号改成右括号       $c.$ 右插头是左括号,下插头是右括号,那么直接联通即可,不需要改变其他括号       $d.$ 右插头是右括号,下插头是左括号,如果联通则一定形成一个闭合回路,那么如果其他地方没有插头则直接把当前状态计入答案,否则此状态不合法,不用延伸状态(右图是一种不合法状态)    然后根据考虑到的所有状态慢慢转移即可...... 因为数据比较大所以用滚动数组和哈希表维护状态,状态在加入哈希表时更新 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<cmath>

Linux grep篇

廉价感情. 提交于 2019-11-29 01:58:01
借鉴来源: https://www.cnblogs.com/flyor/p/6411140.html Linux中grep命令的用法   作为Linux中最常用的三大文本(awk,sed,grep)处理工具之一,掌握好其用法是很有必要的。   首先谈一下grep常用格式为:grep [选项] "模式" 文件   grep家族总共有三个:grep,egrep,fgrep    常用选项    -E: 开启扩展(Extend)正则表达式    -i :忽略大小写(ignore case)    -v :反过来(invert),只打印没有匹配到的,而匹配到的反而不打印    -n :显示行号    -w :被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有liker,而我搜索的只是like,就可以使用-w选项来避免匹配liker    -c :显示总共有多少行被匹配到了,而不是显示被匹配的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到    -o :只显示被模式匹配到的字符串    --color :将匹配到的内容以颜色高亮显示    -A n :显示匹配到的字符串所在的行以及其后N行,after    -B n :显示匹配到的字符串所在的行以及其前N行,before    -C n :显示匹配到的字符串所在的行及其前后各N行,context

sublime常用快捷键

五迷三道 提交于 2019-11-29 00:39:50
一 、自动补全 先要将文件保存为html格式才可以做如下的自动补全(通常扩展名为.html 或.htm)。 html按tab出现 html:5 按tab出现html5标准的头部部分 html:xt 出现html标准的头部部分 二、普通操作类快捷键 Ctrl+Shift+P :打开命令面板 Ctrl+P :搜索项目中的文件 Ctrl+G :跳转到第几行 Ctrl+W :关闭当前打开文件 Ctrl+Shift+W :关闭所有打开文件 Ctrl+Shift+V :粘贴并格式化 Ctrl+D :选择单词,重复可增加选择下一个相同的单词 Ctrl+L :选择行,重复可依次增加选择下一行 Ctrl+Shift+L :选择多行 Ctrl+Shift+Enter :在当前行前插入新行 Ctrl+X :删除当前行 Ctrl+M :跳转到对应括号 Ctrl+U :软撤销,撤销光标位置 Ctrl+J :选择标签内容 Ctrl+F :查找内容 Ctrl+Shift+F :查找并替换 Ctrl+H :替换 Ctrl+R :前往 method Ctrl+N :新建窗口 Ctrl+K+B :开关侧栏 Ctrl+Shift+M :选中当前括号内容,重复可选着括号本身 Ctrl+F2 :设置/删除标记 Ctrl+/ :注释当前行 Ctrl+Shift+/ :当前位置插入注释 Ctrl+Alt+/ :块注释