此错误指的是“sstax = grosspay * SS_TAX”。我不知道我做错了什么。 ):在将全局常量更改为整数后,我得到另一个错误,说'TypeError:只能连接元组(不是“浮动”)到元组'引用“netpay =(grosspay) - (sstax + fedtax + statetax)”。 这是我的代码:
HOURS_IN_WEEK=40.0
PAY_RATE=16.78
SS_TAX=0.075
FED_INC_TAX=0.014
STATE_LOC_TAX=0.08
UNIONDUES=10.0
HEALTH_INS=35.0
def getInfo():
hrs=float(input("How many hours did you work this week?: "))
dependents=float(input("How many dependents do you have?: "))
if hrs > HOURS_IN_WEEK and dependents >= 3.0:
overtime=hrs-HOURS_IN_WEEK
overpay=overtime *(PAY_RATE*1.5)
pay=(HOURS_IN_WEEK*PAY_RATE)
grosspay= overpay+pay
grosspay= grosspay-HEALTH_INS
else:
pay = hrs * PAY_RATE
grosspay = pay
print grosspay
return grosspay,hrs,dependents
def tax(grosspay):
sstax= grosspay*SS_TAX
fedtax= grosspay*FED_INC_TAX
statetax=grosspay*STATE_LOC_TAX
netpay=(grosspay)-(sstax+fedtax+statetax)
print sstax
print fedtax
print statetax
print grosspay
print netpay
def main():
grosspay=getInfo()
tax(grosspay)
main()
答案 0 :(得分:3)
有错误表示你不能将序列乘以任何不是整数的东西。
您正在getInfo()
函数中返回一个序列:
return grosspay,hrs,dependents
这相当于:
return [grosspay, hrs, dependents]
在Python中,当您将序列乘以整数时,您将复制序列:
>>> [1, 2, 3] * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
乘以浮点算没什么意义,这就是错误产生的原因。
你可以通过引用该列表中的一个特定元素(你在grosspay
之后)来修复它,所以改变它:
def main():
grosspay=getInfo()
tax(grosspay)
到此:
def main():
grosspay, hrs, dependents = getInfo()
tax(grosspay)
现在设置了grosspay
,hrs
和dependents
,它应该可以正常工作。
答案 1 :(得分:1)
您的问题是getInfo()
会返回一个元组:grosspay,hrs,dependents
(记住:它是制作元组的逗号,而不是括号!)。此元组将分配给grosspay
中的main()
,然后传递给您的tax()
函数。在你的tax()
函数中,然后尝试用浮点数乘以这个元组(这是一种序列),Python不会这样做。
你可以将序列乘以int
,这样可以重复序列,但这显然不是你想做的。
您需要做的是:
grosspay = getInfo()[0]
...或...
grosspay, _, _ = getInfo()
...仅从grosspay
中提取返回值的getInfo()
部分。