step 1:fork老师的仓库
▪ 将硬币游戏fork到码云仓库。
step2:clone到本地,修改后push到远端仓库
▪ 将仓库Game.git clone到本地。
▪ 运行Python程序。
1)在Python官网上下载Python3.6.2并安装。
2)在Python官网上下载numpy-1.13.1-cp36-cp36m-manylinux1_x86_64.whl,下载好后将文件放到python安装目录下的scripts文件夹中。
3)将上述文件夹路径加入到系统变量中。
4)更新python并安装。
在命令行程序中分别输入:python -m pip install -U pip setuptools,python -m pip install matplotlib。
5)在python中输入import numpy,没有提示异常,说明安装成功。
6)运行Game程序。
▪ 学习 Python 编码风格指南中译版(Google SOC);依据代码规范改进代码。
1)import分组及顺序
import应该按照从最常用到最不常用的顺序分组放置:
①import 标准库
②import 第三方库
③import Google App Engine 相关库……
import应用程序特有的内容应该按照字母顺序排序,但所有以from开头的行都应该靠前,然后是一个空行,再然后是所有以import开头的行。
原程序中:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import random
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import mlab
from matplotlib import rcParams
应改成:
iimport random
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import mlab
from matplotlib import rcParams
2)空格
①等号(“=”)用于指名参数或默认参数值时,两边不要加空格。
原程序中:
# 初始参数设置
Box_sum =500 # 箱子中剩余硬币数量,初始值
People_Flag= random.randint(1,10) # flag 模拟人们取硬币或放硬币的概率 1~10
Threshold = 2.5 # 阈值,可调: 1~Threshold 为取硬币,Threshold+1 ~10 为放硬币
应改成:
Box_sum=500 # 箱子中剩余硬币数量,初始值
People_Flag=random.randint(1,10) # flag 模拟人们取硬币或放硬币的概率 1~10
Threshold=2.5 # 阈值,可调: 1~Threshold 为取硬币,Threshold+1 ~10 为放硬币
②在二元运算符两边各家一个空格,包括:赋值(=)、比较(==、<、>、!=、<>、<=、>=、in、not in、is、is not)、以及布尔运算符(and、or、not)。
原程序中:
# 算法模拟
for x in range(1,5000): # 循环次数表示参与人数
flag= random.randint(1,10) # flag 模拟人们取硬币或放硬币的概率
if flag > Threshold:
# 放硬币
delta=random.randint(1,Max_DonateCoin)
delta=random.randint(1,delta) # 模拟了人们捐款可能性,有偏少的倾向
Box_sum =Box_sum + delta
Box_per_remain.append(Box_sum)
else:
# 取硬币
delta=random.randint(1,Max_TakeCoin)
delta=random.randint(delta,Max_TakeCoin) # 模拟了人 取硬币的可能性,偏多的倾向
if Box_sum < delta:
Box_sum =0 # 如果不够取,则取光
else:
Box_sum =Box_sum - delta
Box_per_remain.append(Box_sum)
print(Box_per_remain)
应改成:
# 算法模拟
for x in range(1,5000): # 循环次数表示参与人数
flag = random.randint(1,10) # flag 模拟人们取硬币或放硬币的概率
if flag > Threshold:
# 放硬币
delta = random.randint(1,Max_DonateCoin)
delta = random.randint(1,delta) # 模拟了人们捐款可能性,有偏少的倾向
Box_sum = Box_sum + delta
Box_per_remain.append(Box_sum)
else:
# 取硬币
delta = random.randint(1,Max_TakeCoin)
delta = random.randint(delta,Max_TakeCoin) # 模拟了人 取硬币的可能性,偏多的倾向
if Box_sum < delta:
Box_sum = 0 # 如果不够取,则取光
else:
Box_sum = Box_sum - delta
Box_per_remain.append(Box_sum)
print(Box_per_remain)
3)空行
在文件最后总是加一个空行,这可以避免很多diff工具生成“No newline at end of file”信息。
原程序中:
## 2. data
plt.plot(x,Box_per_remain,color='r')
plt.bar(x,Box_per_remain,alpha=.5,color='g')
plt.show()
应在最后添上一个空行。
▪ 将修改的代码commit并push到远端的仓库。
▪ 游戏规则说明。
游戏一开始,假设箱子中有500硬币,最多可取5个硬币,最多可放1个硬币。若有5000人参与游戏,模拟取硬币或放硬币的概率,若概率为1~2.5则可以取硬币,3.5~10则只能放硬币。
▪ 远端仓库的链接。
https://gitee.com/xxxmichigirl/Game/commit/b65a009e18581b78ab22910b21c0511f32639cd3