Python 类型错误:can';t将序列乘以类型为'的非整数;浮动';?

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

此错误是指“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
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
返回一个元组,而不是列表。谢谢。我真的看不出有什么区别,但是谢谢你的关注。只有当你以后尝试分配到索引时,你才会注意到区别。