为了账号安全,请及时绑定邮箱和手机立即绑定

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
有点绕,根据老师意思,外层参数不用循环变量,所以就再加一层函数在中间!
#两种方法:

#方法1: 自己构建一个f function 代码如下:

import math

def add(x, y, f):
return f(x) + f(y)

def f(c):
return c**0.5

print add(25, 9, f)

#方法2: 把import math 改为 from math import sqrt,就可以调用 sqrt,代码如下:
from math import sqrt

def add(x, y, f):
return f(x) + f(y)

print add(25, 9, sqrt)
好像有错误,1 4 9 10 25
def cmp_ignore_case(s1, s2):
s1=s1.lower()
s2=s2.lower()
if s1>s2:
return 1
if s1<s2:
return -1
return 0

print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)
一开始出错我还以为是我代码打错了,结果检查之后发现是有一个s1>s2打成了s2>s2.。。。
引以为戒引以为戒,,,
import math
def kf(x):
return pow(x,0.5)

def is_sqr(x):
if kf(x)%1==0:
return x
我优化我优化。。。
def is_sqr(x):
if math.sqrt(x)%1==0:
return x
这样就完全ok了,%取余数,我们除1看看余数为零他就是整数了
又用了一个更简洁的方法,辗转相除法:
def __init__(self, p, q):
if p>q:
a,b = p,q
else:
a,b = q,p
while a%b != 0:
a,b = b,a%b
self.p = p/b
self.q = q/b
def format_name(s):
return s.upper()[0]+s.lower()[1:]

print map(format_name, ['adam', 'LISA', 'barT'])
用两个函数一个是转大写的upper一个转小写的lower再加切片
if p == q:
self.p = self.q = 1
if p>q:
min_num = q
else:
min_num = p
for i in range(min_num,1,-1):
if q % i == 0 and p % i == 0:
p = p/i
q = q/i
self.p = p
self.q = q

最赞回答 / 慕标0217738
你在s.name = 'Tim'的时候其实是给s这个实例增加了name属性你可以在s.name = 'Tim'上面增加一个print s.name 看看,一定会报错s = Student('Bob', 'male', 59)print s.names.name = 'Tim's.score = 99print s.scoreTraceback (most recent call last):  File "index.py", line 19, in    print s.nameAttributeEr...
李在玩蛇。。
我一瞬间甚至想写个开平方的函数再调用。。
print add(25, 9,math.sqrt)
可以直接定义一个开方函数,管他的呢
def kpf(x):
return pow(x,0.5)
下面f那再调用它
import time

def performance(f):
def fn(x):
print 'call ' + f.__name__ + '()in',time.asctime(time.localtime(time.time()))
return f(x)
return fn

@performance
def factorial(n):
return reduce(lambda x,y: x*y, range(1, n+1))

print factorial(10)
能想到的第一种方法,哈哈
import math

def is_sqr(x):
l=math.sqrt(x)
s=int(l)
return not l>s

print filter(is_sqr, range(1, 101))
import json
class Student(object):
def read(self):
return r'["Tim", "Bob", "Alice"]'

s = Student()
print json.load(s)
class Person(object):

__count = 0

def __init__(self, name):
self.name=name
Person.__count+=1
self.count=Person.__count

p1 = Person('Bob')
p2 = Person('Alice')
try:
print Person.__count
except:
print 'AttributeError'
print p1.count
print p2.count
课程须知
本课程是Python入门的后续课程 1、掌握Python编程的基础知识 2、掌握Python函数的编写 3、对面向对象编程有所了解更佳
老师告诉你能学到什么?
1、什么是函数式编程 2、Python的函数式编程特点 3、Python的模块 4、Python面向对象编程 5、Python强大的定制类

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消