Python工作量计算器小项目的实现过程(包含需求迭代)

在这里插入图片描述
通过需求,我们明确了这几点要求:

def time_need(size_project,people):
	return work_hours
def people_need(size_project,work_hours):
	return people_number

我们先简单实现这个式子:

# 注:size代表项目大小,number代表人数,time代表工时数量

# 工时计算
size = 1.5
number = 2
time = size*80/number
print('项目大小为1.5个标准项目,使用2个人力完成,则需要工时数量为:',time)

# 人力计算
size = 0.5
time = 20.0
number = size*80/time
print('项目大小为0.5个标准项目,如果需要在20.0个工时完成,则需要人力数量为:',int(number))

我们把它封装后

# 工时计算
def estimated_time(size,number):
    time=size*80/number
    print('{}倍的工作量,使用{}人力需要{}工时完成'.format(size,number,time))
    return time

# 人力计算
def estimated_number(size,time):
    number=size*80/time
    print('{}倍的工作量,使用{}工时需要{}人力完成'.format(size,time,number))
    return number

# 调用工时计算函数
estimated_time(1.5,2)
# 调用人力计算函数
estimated_number(0.5,20)

我们如此粗糙地交付完一个大概能用的代码后,随着时间的流逝,问题出现了。
在这里插入图片描述我们需要升级一下自己程序中的漏洞,使用到如下知识点

>>> #向上取整、向下取整以及四舍五入函数
... import math
>>> f=11.2
>>> print(math.ceil(f))
12
>>> print(math.floor(f))
11
>>> print(round(f))
11
>>> 

还可以使用下面一种除余方法


# 人力计算
def estimated_number(size,time):
   if (size * 80 % time) != 0:
        number = int(size * 80 / time) + 1
    else:
        number = size * 80 / time
    print('项目大小为%.1f个标准项目,如果需要在%.1f个工时完成,则需要人力数量为:%d人' %(size,time,number))

在这里插入图片描述

import math

# 为函数设置了三个参数,并都带有默认参数
def estimated(types=None,size=1,other=None):
    # 人力计算:如果参数中填了时间,没填人数,就计算人力
    if types == 1:
        number = math.ceil(size * 80 / other)
        print('项目大小为%.1f个标准项目,如果需要在%.1f个工时完成,则需要人力数量为:%d人' %(size,other,number))  
    # 工时计算:如果参数中填了人数,没填时间,就计算工时
    elif types == 2:
        time = size * 80 / other
        print('项目大小为%.1f个标准项目,使用%d个人力完成,则需要工时数量为:%.1f个' %(size,other,time))  
    else:
        print('types should be 1 or two')
# 调用函数的时候,传递两个参数,会自动计算出第三个参数
estimated(1,1.5,2)
estimated(2,1.5,2)

在这里插入图片描述

import math

def estimated(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))  

classify=input('请选择计算类型:(1-人力计算,2-工时计算)')
size=input('请输入项目大小:(1代表标准大小,可以输入小数)')
if classify =='1':
    number=input('请输入人力数量:(请输入整数)')
    estimated(float(size),int(number),time=None)
else:
    work_time=input('请输入工时数量:(请输入小数)')
    estimated(float(size),number=None,float(work_time))

报错:SyntaxError: positional argument follows keyword argument
参数写错了

import math

def estimated(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))  

classify=input('请选择计算类型:(1-人力计算,2-工时计算)')
size=input('请输入项目大小:(1代表标准大小,可以输入小数)')
if classify =='1':
    number=input('请输入人力数量:(请输入整数)')
    estimated(size=float(size),number=int(number),time=None)
else:
    work_time=input('请输入工时数量:(请输入小数)')
    estimated(size=float(size),number=None,work=float(work_time))

增加程序判断

def main():
    again=True
    while again:
        my_input = myinput()
        estimated(my_input)
        s=input('是否继续计算,yes or no')
        if s=='no':
            again=False

猜你喜欢

转载自blog.csdn.net/weixin_44991673/article/details/109897482