[SakuraiYo][软工作业(2)]硬币游戏—— 代码分析与改进

作业目标

  • Python 程序阅读理解
  • 学习Python 编码风格指南中译版(Google SOC), 改进Python程序
  • 如何设计游戏规则,使得慈善事业可持续。 地铁口放置硬币箱(初始值500硬币),顾客可取、可放。请设计一组规则,使得该钱箱永远有钱取(尽量符合实际)
  • 参考:地铁口钱箱
  • 截至日期:作业布置一周内

作业过程

step 1: fork 老师的仓库

+硬币游戏:http://git.oschina.net/juking2017/Game.git 将其 fork 到你的码云仓库。

step2:clone 到本地,修改后 push 到你的远端仓库

  • 将你的仓库Game.git clone到本地, 运行Python 程序,截图。

①clone过程

②pip安装及相关包下载安装

③使用IDLE打开clone到本地的文件GameMain.py并运行

①空格: 在行内吝啬地使用:在圆括号、方括号、大括号里面不要加空格。

在逗号、分号、冒号前面不要加空格。逗号、分号、冒号后面必须加空格,除非那是行尾。

在表示参数、列表、下标、分块开始的圆括号/方括号前面不要加空格。

在二元运算符两边各加一个空格,包括:赋值(=)、比较(==、<、>、!=、<>、<=、>=、in、not in、is、is not)、

以及布尔运算符(and、or、not)。

等号(“=”)用于指名参数或默认参数值时,两边不要加空格。

对此进行修改,形如此类赋值(=)两边各加一个空格,以此类推。

pychecker:确保在代码上执行 pychecker。

你可以设置一个名为 __pychecker__ 的模块级别变量来适当禁用某些警告。比如:__pychecker__ = ‘no-callinit no-classattr‘

③异常处理:异常处理是很 Pythonic 的,因此我们当然同意用它,但只是在符合以下特定条件时:

要像这样抛出异常:raise MyException("Error message") 或者 raise MyException,而不要用双参数的形式(raise MyException, "Error message") 或者 已废弃                                  的基于字符串的异常(raise "Error message")。

模块和包应该定义自己的特定领域的基础异常类,而且这个类应该继承自内置的 Exception类。这种用于一个模块的基础异常应该命名为 Error。

class Error(Exception):
                                  """Base exception for all exceptions raised in module Foo."""
                                   pass

④注释:Doc strings:

⑤模块头及作者信息:

⑥另外对缩进及空行进行一定的优化。

  • 【选做】提出游戏规则修改(优化)建议,并修改程序,运行截图(用于写博客)。
  • 将你的修改commit 并 push 到你远端的仓库。git 命令可参考 附加题2

step3: 写博客。

①说明你的游戏规则,并陈述你(慈善长久不衰)的理由, 附上截图。

1.在地铁口放置一内置500枚硬币的钱箱

2.过路人若需要可从钱箱中取走1~3枚硬币,若不足所需,则取光,取钱倾向多取。

3.善良的人会向钱箱中放置1枚硬币,放钱倾向少放。

(一)若改变初始硬币数为700

(二)改变Threshold为4.5

(三)改变Max_TakeCoin为5

由上面三种情况可以得出,原始代码的游戏规则还是很符合慈善经久不衰的宗旨的。

附:

程序代码

#!/usr/bin/env python3
# -*- coding: cp936 -*-
#
# Copyright [current year] the Melange authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

__authors__ = [
# 请按照姓氏字母顺序排列:
‘"Han BingJie" <[email protected]>‘, # 应提供电子邮件地址
]

# -*- coding: utf-8 -*-
import random
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import mlab
from matplotlib import rcParams

# 初始参数设置
Box_sum = 500 # 箱子中剩余硬币数量,初始值
People_Flag = random.randint(1,10) # flag 模拟人们取硬币或放硬币的概率 1~10
Threshold = 3.5 # 阈值,可调: 1~Threshold 为取硬币,Threshold+1 ~10 为放硬币
Max_TakeCoin = 5 # 最多可取硬币数量
Max_DonateCoin = 1 # 最多可放硬币数量

delata = 0 # 取、放硬币数量
Box_per_remain = [500] # 每次箱子中硬币余额,list

# 算法模拟
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)

# 绘图区
fig = plt.figure()

## 1. 标题、X、Y 轴 label
plt.title(‘Subway testing‘)
plt.xlabel(‘Time‘)
plt.ylabel(‘Money remained‘)

x = np.arange(len(Box_per_remain))

## 2. data

plt.plot(x,Box_per_remain,color = ‘r‘)
plt.bar(x,Box_per_remain,alpha=.5,color = ‘g‘)

plt.show()

__pychecker__ = ‘no-callinit no-classattr‘

class Error(Exception):
"""Base exception for all exceptions raised in module Foo."""
pass

远端仓库的链接:https://gitee.com/EO353998/Game

时间: 2024-10-16 10:17:12

[SakuraiYo][软工作业(2)]硬币游戏—— 代码分析与改进的相关文章

软工作业: (2)硬币游戏—— 代码分析与改进

软工作业: (2)硬币游戏-- 代码分析与改进 一.作业要求 1.Python 程序阅读理解 2.学习Python 编码风格指南中译版(Google SOC)(http://blog.csdn.net/damotiansheng/article/details/43867175),改进Python程序 3.设计游戏规则,使得慈善事业可持续. 地铁口放置硬币箱(初始值500硬币),顾客可取.可放.请设计一组规则,使得该钱箱永远有钱取(尽量符合实际) 注:参考http://www.cnblogs.c

2017(秋)软工作业: (2)硬币游戏—— 代码分析与改进

要求: Python 程序阅读理解 学习Python 编码风格指南中译版(Google SOC), 改进Python程序 如何设计游戏规则,使得慈善事业可持续. 地铁口放置硬币箱(初始值500硬币),顾客可取.可放.请设计一组规则,使得该钱箱永远有钱取(尽量符合实际) step 1: fork 老师的仓库 +硬币游戏:http://git.oschina.net/juking2017/Game.git 将其 fork 到你的码云仓库,登录码云点击右上角fork即可.     step2:将自己仓

【Chapter2】硬币游戏——代码分析与改进

本次作业涉及的代码是老师提供的"硬币游戏",需要我们阅读这段Python 程序,学习Python编码风格并改进Python程序.同时修改游戏规则,使得慈善永久不衰.最后,提交到码云平台. step 1: fork 老师的仓库 打开硬币游戏链接:http://git.oschina.net/juking2017/Game.git ,登录自己的码云账号后,点击页面右上角的fork,即将其 fork 到自己的码云仓库. step 2:clone 到本地并运行Python程序 (1)打开自己G

软件工程作业2——硬币游戏—— 代码分析与改进

任务: Python 程序阅读理解 学习Python 编码风格指南中译版(Google SOC), 改进Python程序 如何设计游戏规则,使得慈善事业可持续. 地铁口放置硬币箱(初始值500硬币),顾客可取.可放.请设计一组规则,使得该钱箱永远有钱取(尽量符合实际) 参考:地铁口钱箱 步骤: 1. fork 老师的仓库 +硬币游戏:http://git.oschina.net/juking2017/Game.git 将其 fork 到你的码云仓库. 2.clone 到本地,修改后 push 到

硬币游戏--代码分析与改进

我的作业: 1.登录码云,打开连接http://git.oschina.net/juking2017/Game.git,点击屏幕右上角的fork. 2.在F盘新建一个目录dizhi,打开Git bash并将码云上的项目clone到该路径下.(http://gitee.com/WangCarmen/Game.git) 3.下载安装python,打开Game,运行程序,发现缺少模块"numpy". 4.打开命令提示符,安装"numpy". 键入如图所示 再键入pytho

硬币游戏—— 代码分析与改进

一.实验目的 此次实验的目的是理解Python程序,并通过学习Python编码风格改进Python程序.在此基础上自己设计一个游戏规则. 二.实验步骤 Step1:fork老师的仓库 点击 http://git.oschina.net/juking2017/Game.git 将其fork到自己的码云仓库: Step2:将仓库Game.git clone到本地, 运行Python 程序,截图 1.将仓库Game.git clone到本地: 为了查找方便我将仓库clone到了桌面在桌面新建文件夹,在

(2)硬币游戏—— 代码分析与改进

1.将你的仓库Game.git clone到本地, 运行Python 程序,截图 2.修改代码 #!/usr/bin/env python3# -*- coding: utf-8 -*-import randomimport numpy as npimport matplotlib.pyplot as pltfrom matplotlib import mlabfrom matplotlib import rcParams # 初始参数设置Box_sum =500 # 箱子中剩余硬币数量,初始值

[SakuraiYo][软工作业(4)]用户体验分析:以 “师路南通网站” 为例

一.页面初览("师路南通"."UMU学习平台"."学生安全教育平台") 1."师路南通"页面初览. *初览亮点:进入网站时的欢迎页面,不仅切合网站主题,且会变幻显示各类相关知识内容,会一定程度上吸引初次点进网站的用户的目光:主界面充满文化韵味. *初览缺点:欢迎页面变换内容时的间隔时间太过漫长,没有耐心的用户或许并不会注意到这个设定. 2."UMU学习平台"页面初览 *初览亮点:页面简单大方,颜色鲜亮时尚,

软工作业2:硬币游戏——代码的分析与改进

目的: Python 程序阅读理解 学习Python 编码风格指南中译版(Google SOC), 改进Python程序 如何设计游戏规则,使得慈善事业可持续. 地铁口放置硬币箱(初始值500硬币),顾客可取.可放.请设计一组规则,使得该钱箱永远有钱取(尽量符合实际) 参考:地铁口钱箱 作业步骤: step 1: fork 老师的仓库 +硬币游戏:http://git.oschina.net/juking2017/Game.git 将其 fork 到自己的码云仓库. step2:clone 到本