依据题意,我们不能用到if/else/for/while等keyword. --------------思考中------------ 思路: 1.用递归实现循环 2.递归的终止条件不用if怎么推断呢?  答案是字典,当中用not not n来把数字n转成bool. 上代码: def sum_(n): return n + { True:lambda:sum_(n-1), False:lambda:0 }[not not n]() print sum_(100)…
VIM 的作者Bram Moolenaar在一篇叫高效文本编辑器的7个习惯的ppt中有这么一段话. Three basic steps 1.    Detect inefficiency 2.    Find a quicker way 3.    Make it a habit 即 1.检测哪里效率低下 2.找到一种更快的方法 3.养成习惯   这3个步骤可谓是大道至简.放之四海而皆准. 不止适用于vim,一样适用于python以及其他语言,也适用于现实生活. 这简单的道理很多人都懂,但是却有…
__new__: 对象的创建,是一个静态方法.第一个參数是cls.(想想也是,不可能是self,对象还没创建,哪来的self) __init__ : 对象的初始化, 是一个实例方法,第一个參数是self. __call__ : 对象可call.注意不是类,是对象. 先有创建,才有初始化.即先__new__,而后__init__. 上面说的不好理解,看样例. 对于__new__ class Bar(object): pass class Foo(object): def __new__(cls,…
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python模块之keyword import keyword ''' >>> help(keyword) Help on module keyword: FUNCTIONS iskeyword = __contains__(...) x.__contains__(y) <==> y in x. DATA __all__ = ['iskeyword', 'kwlist'] kwlist…
自python2.6开始,新增了一种格式化字符串的函数str.format(),可谓威力十足.那么,他跟之前的%型格式化字符串相比,有什么优越的存在呢?让我们来揭开它羞答答的面纱. 语法 它通过{}和:来代替%. “映射”示例 通过位置 In [1]: '{0},{1}'.format('kzc',18) Out[1]: 'kzc,18' In [2]: '{},{}'.format('kzc',18) Out[2]: 'kzc,18' In [3]: '{1},{0},{1}'.format(…
简单的数字的求和: a = input('请输入第一个数:') b = input('请输入第二个数:') sum = float(a) + float(b) print('数字{0}和数字{1}相加的和为:{2}'.format(a, b, sum)) # 换一行代码 print('两数之和为 %.1f' % (float(input('输入第一个数字: ')) + float(input('输入第二个数字: '))))…
  有时候我们从其它地方接受的字符串经过艰难跋涉,它变了个样.比如收到的是'\u6253\u602a\u8005'而不是u'\u6253\u602a\u8005'. 明明肉眼看起来只需要加个u,但是怎么加呢? >>s = '\u6253\u602a\u8005' >>s '\\u6253\\u602a\\u8005' >>'u'+s 'u\\u6253\\u602a\\u8005'   这样不行. 而且表面看起来是'\u6253\u602a\u8005',其实内部是'\…
当项目有很多文件时,要找出控制台的输出是在哪里print出来的很麻烦,不过这事对于强大的python来说小菜一碟. 先上代码和效果,再说明. import sys,traceback class mystdout: stdout = sys.stdout def write(self,_str): if _str != '\n': filepath,lineno = traceback.extract_stack()[-2][0:2] mystdout.stdout.write("%s\t%s(…
曾经客户端的同事用as写一大堆代码来排序,在得知python排序往往只需要一行,惊讶无比,遂对python产生浓厚的兴趣. 之前在做足球的积分榜的时候需要用到多条件排序,如果积分相同,则按净胜球,再相同按进球数,再相同按失球数. 即按积分P.净胜球GD.进球GS.失球GA这样的顺序. 在python中,排序非常方便,排序的参数主要有key.reverse.参数cmp不建议使用了,在python3.0被移除了,用参数key代替. 对于多条件排序,也非常简单,只需要记住下面这句话就行. 即 参数ke…
最近德甲英超西甲各大联赛重燃战火,想起之前写过的一段生成赛程表的代码,用python来写这类东西太舒服了. 这个算法叫做蛇环算法. 即,把所有球队排成一个环形(2列),左边对阵右边,第一支队伍不动,其他队伍顺时针循环,这样就肯定不重复了. 为了方便说明,假设有8支球队a到h.像下面那样按环形排好. a h |   | b g |   | c  f |   | d-e 这样,第1轮的对阵就是,(a,h)(b,g)(c,f)(d,e). 下一轮的时候,第一支球队a不动,其它球队像齿轮一样顺时针走一格…