python - 如何解决TypeError : unsupported operand type(s) for +: 'float' and 'tuple'

标签 python error-handling

该代码的建议是使用几个函数来查找由用户输入生成的列表的静态信息。

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”键入它们。

关于python - 如何解决TypeError : unsupported operand type(s) for +: 'float' and 'tuple' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60471238/

相关文章:

Python中递归减少的Pythonic方法

python - HTML : text colour in automatic generated email with python

php - 重定向到我的custom404错误页面php

excel - 错误处理不处理

java - 播放文件时出错 : NullPointerException in Android

python - 使用正则表达式将捕获的单词替换为捕获的单词和引号

python : Allowing methods not specifically defined to be called ala __getattr__

Python:__str__,但对于一个类,而不是一个实例?

asp.net-mvc - ASP.NET MVC应用程序中的错误

mysql - 声明错误处理程序在 MySQL 中无效?