簡體   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