PYTHON奇幻冒险记18 做一个小项目
每天只需要占用大家中午吃饭的十分钟,有事没事看一下,轻松掌握一门语言!让我们一起努力吧。
小鹏鹏的奇幻冒险来到了美国拉斯维加斯,为了发哥的问题,花费了很多的时间!本来想早点回家休息!谁知就遇到了一位神秘女子的来信!她知道通往下个村落的地图。但是由于她的家族企业过于庞大,她自己一个人已经忙不过来了。所以她需要我们帮她实现一个项目管理的TASK!小鹏鹏本来不想帮,但是她却出现了!
这个忙必须帮~为了女神,小鹏鹏义不容辞!就是上刀山下火海也愿意!
女神记得给我签名合照啊~
要是有新电影记得告诉我一下啊~
TASK:工作量计算器
不知道大家遇到一个问题,通常会怎么做?有一点很重要!就是要学会查资料!因为我们记不下太多的知识点!只能靠自己不断地做笔记和积累!
需求1:计算时间
啥玩意?别害怕!项目经理会告诉你需求!其实很简单,就是除法公式!
1个项目,一个人完成需要80个小时,每天工作10小时,需要8天
1.5个项目(120小时)!=>两个人!=> 需要60小时
输出:工作的时间
需求2:人力计算
0.5个项目(40小时)!=> 20个小时内完成!=>需要2个人!
输出:工作的人数
以上就是我们的任务!
遇到这样的问题,第一步,简单的描述一下!
# 注:size代表项目大小,number代表人数,time代表工时数量
choice = int(input("请输入工作计时器的功能:"))
# 1计算时间,0计算人力
if choice == 1 :
size = 1.5
number = 2
time = size * 80 / number
print('项目大小为%.1f个标准项目,使用%d个人力完成,则需要工时数量为%d:' % (size, number,time))
else:
# 人力计算
size = 0.5
time = 20.0
number = size * 80 /time
print('项目大小为%.1f个标准项目,如果需要在%.1f个工时完成,则需要人力数量为%d:' % (size, time, number))
运行结果:
请输入工作计时器的功能:0
项目大小为0.5个标准项目,如果需要在20.0个工时完成,则需要人力数量为2:
功能就是这样!但是我们目前的版本什么也做不了,还需要不断地升级!很多细节,需要大家不断地斟酌!最好可以自己动手试一下!接下来就是正式开始了!现在是一个程序员真正的表现时候了!说的再好,也没有用!基础的深度,决定了我们的上限。就像是KOBE一样,你永远都不知道他有多么的努力!想成功就得要付出汗水和泪水!
Version1 能用就好
话不多说,先看代码,PYTHON的世界里,满足你的一起幻想!
运用上一节所学的内容!自己创造函数!
choice = int(input("请输入工作计时器的功能:"))
def computer_time(choice,size, number):
# 1计算时间,0计算人力
if choice == 1 :
#size = 1.5
#number = 2
time = size * 80 / number
print('项目大小为%.1f个标准项目,使用%d个人力完成,则需要工时数量为%d:' % (size, number,time))
#else:
def computer_number(choice,size,time):
# 人力计算
if choice == 2:
#size = 0.5
#time = 20.0
number = size * 80 /time
print('项目大小为%.1f个标准项目,如果需要在%.1f个工时完成,则需要人力数量为%d:' % (size, time, number))
computer_time(choice,1.5,2)
computer_number(choice,0.5,20)
运行结果
请输入工作计时器的功能:2
项目大小为0.5个标准项目,如果需要在20.0个工时完成,则需要人力数量为2:
%f的意思是格式化字符串为浮点型,%.1f的意思是格式化字符串为浮点型,并保留1位小数。
Version2 版本改良
话不多说,先看代码,PYTHON的世界里,满足你的一起幻想!
其实上面的代码还是有一些问题的啊!时间也许我们可以加小数点,但是人呢?1.2个人是几个人呢?所以下面我们要解决这个问题!
需要注意的是ceil函数!它是向上取整~
# 注:size代表项目大小,number代表人数,time代表工时数量
import math
choice = int(input("请输入工作的类型:"))
def computer_time(choice , size, number):
global time
# 工时计算
if choice == 1 :
# size = 1.5
# number = 2
time = math.ceil(size * 80 / number)
print('项目大小为%.1f个标准项目,使用%d个人力完成,则需要工时数量为%d:' % (size, number,time))
def computer_number(choice , size ,time):
global number
if choice == 2 :
# 人力计算
#size = 0.5
#time = 20.0
number = math.ceil(size * 80 /time)
print('项目大小为%.1f个标准项目,如果需要在%.1f个工时完成,则需要人力数量为%d:' % (size, time, number))
computer_time(choice,1.5,2)
computer_number(choice,2.5,20)
运行结果:
请输入工作的类型:1
项目大小为1.5个标准项目,使用2个人力完成,则需要工时数量为60:
这样是不是就好了呢?优化的版本!下面我们希望代码可以更简单一些!
import math
# 为函数设置了三个参数,并都带有默认参数
def computer(size=1,number=None,time=None):
# 人力计算:如果参数中填了时间,没填人数,就计算人力
if (number == None) and (time != None):
number = math.ceil(size * 80 / time)
print('项目大小为%.1f个标准项目,如果需要在%.1f个工时完成,则需要人力数量为:%d人' %(size,time,number))
# 工时计算:如果参数中填了人数,没填时间,就计算工时
elif (number != None) and (time == None):
time = size * 80 / number
print('项目大小为%.1f个标准项目,使用%d个人力完成,则需要工时数量为:%.1f个' %(size,number,time))
# 调用函数的时候,传递两个参数,会自动计算出第三个参数
computer(size=1.5,number=2)
computer(size=0.5,time=20.0)
请大家仔细看一下!这样是不是好了很多啊!
运行结果:
项目大小为1.5个标准项目,使用2个人力完成,则需要工时数量为:60.0个
项目大小为0.5个标准项目,如果需要在20.0个工时完成,则需要人力数量为:2人
Version3 成败在此一举
经过了上面的不断努力,是不是我们的项目已经OK?当然还没有!答应女神的事情就要做到极致,发哥就算了,这几年不差钱!
话不多说,先看代码,PYTHON的世界里,满足你的一起幻想!
# 请大家一定要认真看一下!先将下面的代码改造成两个子函数和一个主函数,并调用主函数。
import math
# 第一步先定义一下采集信息的函数
def myinput():
choice = input('请选择计算类型:(1-工时计算,2-人力计算)')
if choice == '1':
size = float(input('请输入项目大小:(1代表标准大小,请输入小数)'))
number = int(input('请输入人力数量:(请输入整数)'))
time = None
return size,number,time
# 这里返回的数据是一个元组
if choice == '2':
size = float(input('请输入项目大小:(1代表标准大小,请输入小数)'))
number = None
time = float(input('请输入工时数量:(请输入小数)'))
return size,number,time
# 这里返回的是一个元组
# 完成计算的函数
def estimated(my_input):
# 把元组中的数据取出来
size = my_input[0]
number = my_input[1]
time = my_input[2]
# 人力计算
if (number == None) and (time != None):
number = math.ceil(size * 80 / time)
print('项目大小为%.1f个标准项目,如果需要在%.1f个工时完成,则需要人力数量为:%d人' %(size,time,number))
# 工时计算
elif (number != None) and (time == None):
time = size * 80 / number
print('项目大小为%.1f个标准项目,使用%d个人力完成,则需要工时数量为:%.1f个' %(size,number,time))
# 主函数
def main():
my_input = myinput() # 开辟一个地址空间!
estimated(my_input) # 将my_input当成参数
# 调用主函数
main()
运行结果
请选择计算类型:(1-工时计算,2-人力计算)1
请输入项目大小:(1代表标准大小,请输入小数)3.1
请输入人力数量:(请输入整数)5
项目大小为3.1个标准项目,使用5个人力完成,则需要工时数量为:49.6个
到了这里,是不是代码已经变得很高大上了一些呢?但是还没有结束!我们的任务没有结束!女神依然不满意,所以继续升级改造!想想游戏的设计,我们的代码是不是也应该借鉴一下啊!凡是总要有开始和结束啊!这就是有始有终!
话不多说,先看代码,PYTHON的世界里,满足你的一起幻想!
import math
# 变量key代表循环运行程序的开关,这就是我们新加的设计!
key = 1
# 采集信息的函数
def myinput():
choice = input('请选择计算类型:(1-工时计算,2-人力计算)')
if choice == '1':
size = float(input('请输入项目大小:(1代表标准大小,请输入小数)'))
number = int(input('请输入人力数量:(请输入整数)'))
time = None
return size,number,time
# 这里返回的数据是一个元组
if choice == '2':
size = float(input('请输入项目大小:(1代表标准大小,请输入小数)'))
number = None
time = float(input('请输入工时数量:(请输入小数)'))
return size,number,time
# 这里返回的是一个元组
# 完成计算的函数
def estimated(my_input):
# 把元组中的数据取出来
size = my_input[0]
number = my_input[1]
time = my_input[2]
# 人力计算
if (number == None) and (time != None):
number = math.ceil(size * 80 / time)
print('项目大小为%.1f个标准项目,如果需要在%.1f个工时完成,则需要人力数量为:%d人' %(size,time,number))
# 工时计算
elif (number != None) and (time == None):
time = size * 80 / number
print('项目大小为%.1f个标准项目,使用%d个人力完成,则需要工时数量为:%.1f个' %(size,number,time))
# 询问是否继续的函数,这就是设计的创新点
def again():
# 声明全局变量key,以便修改该变量
global key
a = input('是否继续计算?继续请输入y,输入其他键将结束程序。')
if a != 'y':
# 如果用户不输入'y',则把key赋值为0
key = 0
# 主函数
def main():
print('女神,欢迎使用工作量计算小程序!')
while key == 1:
my_input = myinput()
estimated(my_input)
again()
print('感谢使用工作量计算小程序!')
main() # 开辟地址空间
不知道大家有没有注意到一个细节!比如说def main, def computer ,def my_input ,而且def main 中包含了 computer,my_input 这些函数,为什么最后还有main()?是不是需要开辟一下地址空间?这个问题留给大家思考一下!带着问题解决问题!
下面的这篇文章中有详细的解答!
https://www.zhihu.com/question/49136398
实际上,main()就是一个程序的入口!
运行结果
欢迎使用工作量计算小程序!
请选择计算类型:(1-工时计算,2-人力计算)2
请输入项目大小:(1代表标准大小,请输入小数)9.0
请输入工时数量:(请输入小数)8
项目大小为9.0个标准项目,如果需要在8.0个工时完成,则需要人力数量为:90人
是否继续计算?继续请输入y,输入其他键将结束程序。n
感谢使用工作量计算小程序!
BOSS来袭
本节的内容其实还是比较复杂的!之所以添加一些动图是为了让大家不感到枯燥和乏味!语言的学习还是要看自己的热爱了!你要是把它当成好朋友,一切问题也会很简单!知识不在于学了多了,主要是帮助我们学会一种思维!一种方法去解决问题!PYTHON系列我会一直坚持原创并且不收费!好东西就要与大家一起分享!同时原创不易,也需要大家的支持和鼓励。谢谢大家!BOSS这次要升级了!给大家留个悬念!下期我们不见不散!
郑重说明:我们只谈PYTHON的学习方法,不谈如何去追求女神。要是有好办法可以写文章告诉大家!
下期内容更加精彩!我们不说再见!
欢迎大家阅读我的《人性的弱点》,给你一种不一样的感觉!