问题遇到的现象和发生背景
请问为什么两种计算方式中,工时计算可以将time = None 放入函数调用的括号中,而当我把人数计算中的number = None放入调用函数的括号中时,出现报错
问题相关代码,请勿粘贴截图
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))
choice = int(input('请选择您想计算的数据类型,1为工时计算,2为人数计算'))
if choice == 1:
number = int(input('请输入工作人数'))
size = int(input('请输入任务大小'))
estimated(size,number,time=None)
if choice == 2:
size = int(input('请输入任务大小'))
time = int(input('请输入工时长短'))
estimated(size,number=None,time)
运行结果及报错内容
bash:122$ python ~/classroom/apps-1-id-5cd9765d19bbcf00015547b5/122/main.py
File "/home/python-class/classroom/apps-1-id-5cd9765d19bbcf00015547b5/122/main.py", line 21
estimated(size,number=None,time)
^
SyntaxError: positional argument follows keyword argument
我的解答思路和尝试过的方法
在上面代码的基础上,我尝试了这种方法
if choice == 2:
size = int(input('请输入任务大小'))
time = int(input('请输入工时长短'))
estimated(size=size,number=None,time=time)
直接传入参数,但是明明感觉位置传参也可以啊,明明位置都对
我想要达到的结果
希望能搞懂为什么上面不对,以及为什么改了之后又可以了