这一节应该是我觉得比较难理解的一节了。。。。不过返回函数这种用法我到现在还没感觉很有必要。。。。可能需要之后深入学习之后才会用到
2018-07-15
# coding= utf-8
#取公约数方法
def gcd(a,b):
print '初始化:a=%s' % a
print '初始化:b=%s' % b
print '################'
if b == 0:
print '规约到b=0:a=%s' % a
print '规约到b=0:b=%s' % b
return a
return gcd(b, a % b)
print gcd(6,8)
测试了一下参考答案中获取分子分母公约数的方法,代码如上所示。可以看到递归调用的过程。
#取公约数方法
def gcd(a,b):
print '初始化:a=%s' % a
print '初始化:b=%s' % b
print '################'
if b == 0:
print '规约到b=0:a=%s' % a
print '规约到b=0:b=%s' % b
return a
return gcd(b, a % b)
print gcd(6,8)
测试了一下参考答案中获取分子分母公约数的方法,代码如上所示。可以看到递归调用的过程。
2018-07-13
import math
def is_sqr(x):
return math.sqrt(x) == int(math.sqrt(x))
print filter(is_sqr, range(1, 101))
def is_sqr(x):
return math.sqrt(x) == int(math.sqrt(x))
print filter(is_sqr, range(1, 101))
2018-07-13
估计很多人没懂这个吧(self.p * r.q + self.q * r.p, self.q * r.q)
在这里p是分子,q是分母
(self.p * r.q + self.q * r.p)这是有理化计算后的分子
(self.q * r.q)这是有理化计算后的分母
r.q是令一个加数的分子,r.p是另一个加数的分母
例如:1/3+3/2 第一个分数的分子乘第二个分数的分母+第一个分数的分母乘第二个分数的分子(也就是交叉相乘再相加)最后得11(这是经过计算后得到的结果的分子)
第一个分数的分母乘第二个分数的分母( self.q * r.q)得到结果是6
在这里p是分子,q是分母
(self.p * r.q + self.q * r.p)这是有理化计算后的分子
(self.q * r.q)这是有理化计算后的分母
r.q是令一个加数的分子,r.p是另一个加数的分母
例如:1/3+3/2 第一个分数的分子乘第二个分数的分母+第一个分数的分母乘第二个分数的分子(也就是交叉相乘再相加)最后得11(这是经过计算后得到的结果的分子)
第一个分数的分母乘第二个分数的分母( self.q * r.q)得到结果是6
2018-07-12
-- 使用__future__
from __future__ import unicode_literals
s = 'am I an unicode?'
print isinstance(s, unicode)
-- 加前缀u
s = u'am I an unicode?'
print isinstance(s, unicode)
-- 尝试前缀b
from __future__ import unicode_literals
s = b'am I an unicode?'
print isinstance(s, bytes)
#上面的 运行结果都是True
from __future__ import unicode_literals
s = 'am I an unicode?'
print isinstance(s, unicode)
-- 加前缀u
s = u'am I an unicode?'
print isinstance(s, unicode)
-- 尝试前缀b
from __future__ import unicode_literals
s = b'am I an unicode?'
print isinstance(s, bytes)
#上面的 运行结果都是True
2018-07-11
关于上一章闭包、装饰器可以参考https://blog.csdn.net/u014465934/article/details/80993828
2018-07-11
第二种方法(缺少的函数f可以通过lambda解决)
def calc_prod(lst):
def lazy_prod():
return reduce(lambda x,y:x*y,lst)
return lazy_prod
f = calc_prod([1, 2, 3, 4])
print f()
def calc_prod(lst):
def lazy_prod():
return reduce(lambda x,y:x*y,lst)
return lazy_prod
f = calc_prod([1, 2, 3, 4])
print f()
2018-07-10
第一种方法(注意是你reduce写f函数时候没有f,所以多一层def)
def calc_prod(lst):
def lazy_prod():
def f(x,y):
return x*y
return reduce(f,lst)
return lazy_prod
f = calc_prod([1, 2, 3, 4])
print f()
def calc_prod(lst):
def lazy_prod():
def f(x,y):
return x*y
return reduce(f,lst)
return lazy_prod
f = calc_prod([1, 2, 3, 4])
print f()
2018-07-10
def format_name(s):
# return s[:1].upper()+s[1:].lower()
return s.capitalize()
print map(format_name, ['adam', 'LISA', 'barT'])
# return s[:1].upper()+s[1:].lower()
return s.capitalize()
print map(format_name, ['adam', 'LISA', 'barT'])
2018-07-10
def format_name(s):
return s[:1].upper()+s[1:].lower()
print map(format_name, ['adam', 'LISA', 'barT'])
return s[:1].upper()+s[1:].lower()
print map(format_name, ['adam', 'LISA', 'barT'])
2018-07-10
class Person(object):
def __init__(self, name, score):
self.name = name
self.__score = score
p = Person('Bob', 59)
print p.name
try:
print p.__score
except AttributeError:
print 'attributeError'
def __init__(self, name, score):
self.name = name
self.__score = score
p = Person('Bob', 59)
print p.name
try:
print p.__score
except AttributeError:
print 'attributeError'
2018-07-10