Learn Python with Steem #06 笔记#
[toc]
划重点#
编程练习#
1
2
3
4
5
6
7
8
9
| # 作业
def my_average(data):
average = (sum(data) - max(data) - min(data)) / (len(data) - 2)
return average
my_list = [1, 8, 3, 6, 2, 345, -23, 7]
answer = my_average(my_list)
print(answer)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| # 将计算busy机器人点赞比例的功能写成一个函数
import requests
def busy_vote_percent(username):
minVests = 20000000
# maxVests = 4000000000000 # maxVests 不是这个值
maxVests = 5000000000000
limitVests = 10000000000000
minPercent = 6 / 100
maxPercent = 2500 / 100
url = 'https://steemdb.com/api/accounts?account=' + username
response = requests.get(url)
data = response.json()[0]
followers_mvest = data.get('followers_mvest')
if followers_mvest < minVests or followers_mvest > limitVests:
percent = 0
else:
percent = (10000 / maxVests) * followers_mvest
# print(percent)
percent = min(max(percent, minPercent), maxPercent) / 100
print('Hi,{}\nfollowers_mvest:{}\nyour busy vote percent is: {:.2%}\n'.
format(username, followers_mvest, percent))
# return percent
busy_vote_percent('yjcps')
busy_vote_percent('dapeng')
busy_vote_percent('shine.wong')
busy_vote_percent('deanliu')
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| Hi,yjcps
followers_mvest:93266616.60498305
your busy vote percent is: 0.19%
Hi,dapeng
followers_mvest:1856251363.8415272
your busy vote percent is: 3.71%
Hi,shine.wong
followers_mvest:261131007.75513688
your busy vote percent is: 0.52%
Hi,deanliu
followers_mvest:18379826592.987816
your busy vote percent is: 25.00%
|
变量的作用域#
变量的作用域指的是变量的可见范围,分两类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| # 全局变量
a = 20
b = 30
c = 5
def my_fun():
# 局部变量
a = 7
b = 10
print('call my_fun:a={}, b={}, c={}'.format(a, b, c))
# 在函数里面有定义a,b变量属于局部变量,
# 在使用的时候优先使用局部变量,
# 看不见函数外面的全局变量
# 函数里面没有定义c变量
# 使用的时候会去查找外面的全局变量
my_fun()
print('a={}, b={}, c={}'.format(a, b, c))
# 在外面看不见函数里面的局部变量
|
1
2
| call my_fun:a=7, b=10, c=5
a=20, b=30, c=5
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| # 全局变量
a = 20
b = 30
c = 5
def my_fun():
# 局部变量
a = 7
# 可以用global声明b是函数外面的全局变量
global b
b = 10
print('call my_fun:a={}, b={}, c={}'.format(a, b, c))
my_fun()
print('a={}, b={}, c={}'.format(a, b, c))
# 在函数外面可以看到变量b被修改了
|
1
2
| call my_fun:a=7, b=10, c=5
a=20, b=10, c=5
|
匿名函数#
Python中用lambda定义匿名函数
格式: lambda 参数:表达式
1
2
3
4
5
6
7
8
| f = lambda x: x * 2 + x + 2
## 等价f(x)
# def f(x):
# return x * 2 + x + 2
print(f(2))
print(f(5))
|
递归函数#
在函数里面调用函数自己本身来解决问题,这就是递归。
在遇到一些定义,数据结构或问题的解决方法是递归的时候,可以考虑使用递归函数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| # 经典例子:计算n的阶乘n!
def factorial(n):
# 递归出口
if n == 0:
return 1
# 递归体
return n * factorial(n - 1)
print(factorial(4))
print(factorial(9))
|
装饰器#
在Python中可以用装饰器来修饰函数。
使用装饰器的目的在于:为原有函数添加新的功能但不修改原来的程序。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| # 定义一个装饰器
def print_fun_name(func):
def wrapper(*args, **kw):
print('-----------------')
print('call function:{}'.format(func.__name__))
print('-----------------')
return func(*args, **kw)
return wrapper
# 使用装饰器
@print_fun_name
def say_hello(name):
print('Hello', name)
@print_fun_name
def say_bye(name):
print('Bye', name)
say_hello('yjcps')
say_bye('hacper')
|
1
2
3
4
5
6
7
8
| -----------------
call function:say_hello
-----------------
Hello yjcps
-----------------
call function:say_bye
-----------------
Bye hacper
|
[DA series - Learn Python with Steem]#
我的笔记:#