python 模拟一个果园(给定规则的随机事件,最基本的程序设计方法学)

这是我初学python在咸鱼接的一个单子,所用的代码都是最简单入门的,大佬勿喷,当个乐子看,主要是一个思维方面的问题

这应该是他们的一个作业,我当时学python才3个月作业,在咸鱼接单子,当时想着是写不出来不要钱,急单就不接,多写一点就会使自己的代码水平增长,当时抱着这个想法来着

这篇文章就是基于那天的一个咸鱼的单子,要求模拟一个果园,然后计算若干年后的产量

其实当时看到这里的时候是懵逼的,我以为要用一些什么高级的库才能完成这个事情,然后我问他,规则呢,他说,规则你自己定,我一寻思自己定,那么我就开始自己制定一些规则

既然是果园计算产量的问题,我这里应用两个库一个是random库,这个库可以给我们所谓的随机,另一个是time库,这个库用来产生进度条(对于果园来说是可有可无的一个库但是,为了加一个进度条给与用户一些体验感,就像加入一个可视化的界面)。

import random
import time

好了,现在假设我有一个果园,首先提示用户,你有一片果园

print("欢迎您回来经营果园")

我有了一片果园,果园里有什么,当然有果树,我现在给定规则,我有三种果树,苹果,梨子,李子,

果树干嘛的,用来结果的,怎么结果的,怎么用代码实现,很抽象,我当时想的是建立一个函数来制定一种果树的规则,要确保随机这个特性,话不多说,先上代码

def appletree(fa, item):
    if item < 3:
        return 0
    elif 3 <= item < 5:
        win = 50 * fa
        return win
    elif 5 <= item < 20:
        win = 50 * fa * 5
        return win
    elif 20 <= item < 23:
        win = 50 * fa
        return win
    elif 23 <= item < 39:
        return random.randint(0, 6)
    else:
        return 0

在这里我制定了苹果树的规则函数,函数的输入有俩个参数,分别是fa(丰收指数),item(年份)return则是产量,我这里默认是苹果苗苗,所以年份小于3(我乱设的)无论丰收指数多大都不会有产量,在第5到20年的时候,一棵树的产量win由公式给出同理给出年份产量的计算公式,在第39年之后数老了,产量就无了

同理给出另外两棵树的规则函数,上代码!!!

def plumtree(fa, item):
    if item < 5:
        return 0
    elif 5 <= item < 8:
        win = 50 * fa
        return win
    elif 8 <= item < 19:
        win = 50 * fa * 5
        return win
    elif 19 <= item < 24:
        win = 50 * fa
        return win
    elif 24 <= item < 35:
        return random.randint(0, 3)
    else:
        return 0


def peartree(fa, item):
    if item < 5:
        return 0
    elif 5 <= item < 6:
        win = 60 * fa
        return win
    elif 6 <= item < 25:
        win = 60 * fa * 5
        return win
    elif 25 <= item < 30:
        win = 60 * fa
        return win
    elif 30 <= item < 50:
        return random.randint(0, 5)
    else:
        return 0

 有了树,现在需要年份往前迭代,在年份迭代里加入应用果树函数,用random随机数给出丰收指数,丰收指数和年份带入果树的规则函数就能得到产量

完整的代码:

import random
import time

print("欢迎您回来经营果园")
year = eval(input("请输入模拟果园生长年数:"))
sum1 = eval(input("请输入您期待的果园的苹果树个数:"))
sum2 = eval(input("请输入您期待的果园的梨子树个数:"))
sum3 = eval(input("请输入您期待的果园的李子树个数:"))


def timejindu():
    s = 50
    print("start".center(s // 2, "="))
    start = time.perf_counter()
    for i in range(s + 1):
        a = '*' * i
        b = '.' * (s - i)
        c = (i / s) * 100
        d = time.perf_counter() - start
        print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c, a, b, d), end="")
        time.sleep(0.1)
    print("\n" + "end".center(s // 2, '-'))


def appletree(fa, item):
    if item < 3:
        return 0
    elif 3 <= item < 5:
        win = 50 * fa
        return win
    elif 5 <= item < 20:
        win = 50 * fa * 5
        return win
    elif 20 <= item < 23:
        win = 50 * fa
        return win
    elif 23 <= item < 39:
        return random.randint(0, 6)
    else:
        return 0


def plumtree(fa, item):
    if item < 5:
        return 0
    elif 5 <= item < 8:
        win = 50 * fa
        return win
    elif 8 <= item < 19:
        win = 50 * fa * 5
        return win
    elif 19 <= item < 24:
        win = 50 * fa
        return win
    elif 24 <= item < 35:
        return random.randint(0, 3)
    else:
        return 0


def peartree(fa, item):
    if item < 5:
        return 0
    elif 5 <= item < 6:
        win = 60 * fa
        return win
    elif 6 <= item < 25:
        win = 60 * fa * 5
        return win
    elif 25 <= item < 30:
        win = 60 * fa
        return win
    elif 30 <= item < 50:
        return random.randint(0, 5)
    else:
        return 0


for item in range(year):
    print("这是您经营果园的第:", item + 1, "年")
    ityuear = item + 1
    if ityuear > 3:
        farand = random.uniform(0.3, 0.6)
    elif ityuear >= 3 < 30:
        farand = random.uniform(0.6, 0.8)
    else:
        farand = random.uniform(0.05, 0.5)
    applesum = appletree(farand, ityuear) * sum1
    pearsum = peartree(farand, ityuear) * sum2
    plumsum = plumtree(farand, ityuear) * sum3
    print("今年您收获了:", applesum, "斤苹果")
    print("今年您收获了:", pearsum, "斤梨子")
    print("今年您收获了:", plumsum, "斤李子")
    if item + 1 <= year:
        print("旧的一年已经离去到新的一年了")
    # timejindu()


a = input()

在主体迭代函数中加入进度条函数,每次迭代会给出视觉的进度条,给与用户一些好的体验

其实这仅仅是一个最简单的模拟果园,其实可以再敢想一点,接手的果园不是一个新的果园,需要调整果园里的新老树比例以及年份的比例,再加入一些随机出现的随机事件,收成就可以更进一步的随机化,可以加一些可视化的界面,加一些按键操作,差不多就成为了一个小小的游戏。

其实,兴趣是最好的老师,python这个玩意确实很有意思,一些有意思的想法,python应该都能简单的初步实现

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值