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


    目的:

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

    作业步骤:

    step 1: fork 老师的仓库

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

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

    首先,从软件管家中安装Python软件,安装成功后,要运行还要安装pip,安装链接为http://blog.csdn.net/qy20115549/article/details/52179800,就安装好了。

    打开IDLE,open之前克隆的GameMain.py

    单击Run,结果如下图所示:(里面的数字都是随机的)

    学习 Python 编码风格指南中译版(Google SOC); 依据代码规范改进代码。

    根据上述python编码风格,修改代码,将所有用tab实现的空格重新用空格键打出来,修改后的代码如下图所示:

    将我的修改commit 并 push 到我远端的仓库。

    查看我的码云,界面如下图所示:

     

    附:

    1.修改后的程序代码:

    #!/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
    
    
    # 初始参数设置
    Box_sum =500         # 箱子中剩余硬币数量,初始值
    People_Flag= random.randint(1,10)       # flag 模拟人们取硬币或放硬币的概率 1~10 
    Threshold = 2.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()

    2.我的远端仓库的链接:

    https://gitee.com/LiuYiLun/Game

  • 相关阅读:
    嵌入式GUI FTK介绍(7)主题
    嵌入式GUI FTK介绍(2)两个小应用程序
    嵌入式GUI FTK介绍(8)编译/运行PC模拟版本
    嵌入式GUI FTK介绍(5)在多平台上运行
    嵌入式GUI FTK介绍(4)脚本语言绑定
    嵌入式GUI FTK介绍(3)XML界面描述语言
    活动图
    ASP.NET程序中常用的三十三种代码
    Server的Transfer和Response的Redirect (转)
    .net 点击刷新验证码问题
  • 原文地址:https://www.cnblogs.com/007-liuyilun/p/7571439.html
Copyright © 2020-2023  润新知