繁体   English   中英

如何解决 TypeError: 不支持的操作数类型 +: 'float' 和 'tuple'

[英]How to solve TypeError: unsupported operand type(s) for +: 'float' and 'tuple'

这段代码的提议是使用几个函数来查找用户输入的列表的静态信息。

def getNum():
    nums = []
    iNumStr = input("please input the number(use enter to exist): ")
    while iNumStr != "":
        nums.append(eval(iNumStr))
        iNumStr = input("please input the number(use enter to exist): ")
    print(type(nums))
    return nums




def mean(numbers):
    s = 0.0
    for num in numbers:
        s = s + num
    return s / len(numbers)


def dev(numbers, mean):
    sdev = 0.0
    for num in numbers:
        sdev = sdev + (num - mean) ** 2
    return pow(sdev / (len(numbers) - 1), 0.5)


def median(numbers):
    sorted(numbers)
    size = len(numbers)
    if size % 2 == 0:
        med = (numbers[size//2-1]+numbers[size//2])/2
    else:
        med = numbers[size//2]
    return  med
n = getNum()
m = mean(n)
print("ave{},dev{:.2},med{}.".format(m,dev(n,m),median(n)))

问题是它向我展示了

in mean
    s = s + num
TypeError: unsupported operand type(s) for +: 'float' and 'tuple'

同样在其他功能块中也有同样的问题。

eval函数将传递的参数计算为python 表达式 可能您正在输入像这样的“4,4”、“4,5”等浮点数。 eval() 像元组一样评估它。 它实际上将元组附加到您的列表中。 不要用逗号键入浮点数,而是用点“4.5”、“4.6”键入它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM