Python 类型错误:can';t将序列乘以类型为'的非整数;浮动';?
此错误是指“sstax=grosspay*SSU TAX”。我不知道我做错了什么。):在将全局常量更改为整数之后,我得到了另一个错误,即“TypeError:只能将元组(而不是“float”)连接到元组”,指的是“netpay=(grosspay)-(sstax+fedtax+statetax)”。 这是我的密码:Python 类型错误:can';t将序列乘以类型为'的非整数;浮动';?,python,Python,此错误是指“sstax=grosspay*SSU TAX”。我不知道我做错了什么。):在将全局常量更改为整数之后,我得到了另一个错误,即“TypeError:只能将元组(而不是“float”)连接到元组”,指的是“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 UNIONDU
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()
您的问题是
getInfo()
返回一个元组:grosspay,hrs,dependents
(记住:元组是逗号,而不是括号!)。此元组被分配给main()
中的grosspay
,然后传递给tax()
函数。在tax()
函数中,然后尝试将这个元组(这是一种序列)乘以一个浮点,而Python不会这样做
您可以将一个序列乘以一个int
,这样可以重复序列,但这显然不是您想要做的
您需要做的是:
grosspay = getInfo()[0]
……或者
grosspay, _, _ = getInfo()
…要仅从
getInfo()
中提取返回值的grosspay
部分,您的问题是getInfo()
返回一个元组:grosspay,hrs,dependents
(请记住:组成元组的是逗号,而不是括号!)。此元组被分配给main()
中的grosspay
,然后传递给tax()
函数。在tax()
函数中,然后尝试将这个元组(这是一种序列)乘以一个浮点,而Python不会这样做
您可以将一个序列乘以一个int
,这样可以重复序列,但这显然不是您想要做的
您需要做的是:
grosspay = getInfo()[0]
……或者
grosspay, _, _ = getInfo()
…要仅从
getInfo()
中提取返回值的grosspay
部分,错误说明不能将序列与任何非整数相乘
您正在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
和依赖项
,应该可以正常工作。错误说明不能将序列与任何非整数相乘
您正在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
已经设置好,应该可以正常工作。返回grosspay,hrs,dependents
返回一个元组,而不是列表。谢谢。我真的看不出有什么区别,但感谢您的帮助。只有在以后尝试分配到索引时,您才会注意到差异。return grosspay,hrs,dependents
返回一个元组,而不是列表。谢谢。我真的看不出有什么区别,但是谢谢你的关注。只有当你以后尝试分配到索引时,你才会注意到区别。