PYTHON奇幻冒险记18 做一个小项目

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的学习方法,不谈如何去追求女神。要是有好办法可以写文章告诉大家!
下期内容更加精彩!我们不说再见!

欢迎大家阅读我的《人性的弱点》,给你一种不一样的感觉!

猜你喜欢

转载自blog.csdn.net/weixin_46259642/article/details/112434736