软工作业: 硬币游戏—— 代码分析与改进
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软工作业: 硬币游戏—— 代码分析与改进相关的知识,希望对你有一定的参考价值。
软工作业: (2)硬币游戏—— 代码分析与改进
一、作业要求
1、Python 程序阅读理解
2、学习Python 编码风格指南中译版(Google SOC)(http://blog.csdn.net/damotiansheng/article/details/43867175),改进Python程序
3、设计游戏规则,使得慈善事业可持续。 地铁口放置硬币箱(初始值500硬币),顾客可取、可放。请设计一组规则,使得该钱箱永远有钱取(尽量符合实际)
注:参考http://www.cnblogs.com/juking/p/7273043.html
二、作业步骤
step 1: fork 老师的仓库
直接点击页面右上角的fork后,结果如图1所示:
图1 fork 老师的仓库
step2:clone 到本地并运行Python 程序
1、首先百度搜索并下载Python,在安装时要特别注意安装向导界面最下方的复选框需要打钩,以完成环境变量配置,安装及运行结果如图2、3所示。
图2 安装截图
图3 环境变量
2、双击运行IDLE,单击Flie —open,自己之前克隆下的Game里的SRC文件夹中的GameMain.py ,尝试运行,结果如图4、5所示
图4 打开文件
图5 运行错误
3、为解决以上运行错误,下载并安装安装pip,具体参考(http://blog.csdn.net/qy20115549/article/details/5217)
cmd命令行依次键入:
1 C:\\Users\\刘奔>AppData\\Local\\Programs\\Python\\Python36\\Scripts\\easy_install.exe
2 C:\\Users\\刘奔>AppData\\Local\\Programs\\Python\\Python36\\Scripts\\pip.exe
执行结果如图6所示
图6 安装pip
4、安装pip后运行依旧出错,原因在于文件中包含了两个第三方库,直接运行会导致出错,我们在cmd中利用pip指令进行python的第三方库的安装
cmd命令行依次键入:
1 pip install numpy
2 pip install matplotlib
执行结果如图7所示
图7 第三方库安装
5、再次尝试运行GameMain.py,结果如图8、9所示
图8 GameMain.py运行结果(1)
图9 GameMain.py运行结果(2)
6、进行代码规范化,依据编码风格,最基本最简单的要求是对缩进的要求,规范化后代码如下:
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 import random
4 import numpy as np
5 import matplotlib.pyplot as plt
6 from matplotlib import mlab
7 from matplotlib import rcParams
8
9
10 # 初始参数设置
11 Box_sum =500 # 箱子中剩余硬币数量,初始值
12 People_Flag= random.randint(1,10) # flag 模拟人们取硬币或放硬币的概率 1~10
13 Threshold = 2.5 # 阈值,可调: 1~Threshold 为取硬币,Threshold+1 ~10 为放硬币
14 Max_TakeCoin=5 # 最多可取硬币数量
15 Max_DonateCoin=1 # 最多可放硬币数量
16
17 delata=0 # 取、放硬币数量
18 Box_per_remain= [500] # 每次箱子中硬币余额,list
19
20
21 # 算法模拟
22 for x in range(1,5000): # 循环次数表示参与人数
23 flag= random.randint(1,10) # flag 模拟人们取硬币或放硬币的概率
24 if flag > Threshold:
25 # 放硬币
26 delta=random.randint(1,Max_DonateCoin)
27 delta=random.randint(1,delta) # 模拟了人们捐款可能性,有偏少的倾向
28 Box_sum =Box_sum + delta
29 Box_per_remain.append(Box_sum)
30 else:
31 # 取硬币
32 delta=random.randint(1,Max_TakeCoin)
33 delta=random.randint(delta,Max_TakeCoin) # 模拟了人 取硬币的可能性,偏多的倾向
34 if Box_sum < delta:
35 Box_sum =0 # 如果不够取,则取光
36 else:
37 Box_sum =Box_sum - delta
38 Box_per_remain.append(Box_sum)
39
40 print(Box_per_remain)
41
42
43 # 绘图区
44 fig = plt.figure()
45
46 ## 1. 标题、X、Y 轴 label
47 plt.title(‘Subway testing‘)
48 plt.xlabel(‘Time‘)
49 plt.ylabel(‘Money remained‘)
50
51 x= np.arange(len(Box_per_remain))
52
53 ## 2. data
54
55 plt.plot(x,Box_per_remain,color=‘r‘)
56 plt.bar(x,Box_per_remain,alpha=.5,color=‘g‘)
57
58 plt.show()
step3:修改参数设置改进方案并push至远端仓库
1、修改阈值为3.5,最多可取硬币数为3,最多可放银币数为2
1 old = 3.5 # 阈值,可调: 1~Threshold 为取硬币,Threshold+1 ~10 为放硬币
2 Max_TakeCoin=3 # 最多可取硬币数量
3 Max_DonateCoin=2 # 最多可放硬币数量
2、修改后运行结果如图10所示
图10 改进后执行结果
3、push至远端仓库 https://gitee.com/Aaron17/Game(注:push时出错,选择上传)
以上是关于软工作业: 硬币游戏—— 代码分析与改进的主要内容,如果未能解决你的问题,请参考以下文章