这是我初学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应该都能简单的初步实现