首页 > 解决方案 > 如果给定一个空列表,则返回“0”

问题描述

我的任务是制作一个程序来查找用户定义的数字集的中位数、众数和均值。我相信这部分已经完成,但是如果列表为空,也应该返回“0”。我得出我的号码列表的方式是通过

enterNumbers = list(map(int,input("Enter Numbers :  ").strip().split(' ')))[:]

这返回ValueError: invalid literal for int() with base 10: ''

显然这只会接受整数作为参数,但我不知道从哪里开始解决这个问题。

完整代码如下:

    #Define median , Mode and Mean
def median(enterNumbers):   
    enterNumbers.sort() 
    middle = len(enterNumbers) // 2 
    if len(enterNumbers) % 2 == 1:   
        return enterNumbers[middle]  
    else:  
        return enterNumbers[middle] + enterNumbers[middle - 1] / 2

def mode(enterNumbers):
    numberDictionary = {}
    for digit in enterNumbers:
        number = numberDictionary.get(digit, None)
        if number == None:
            numberDictionary[digit] = 1
        else:
            numberDictionary[digit] = number + 1
        maxValue = max(numberDictionary.values())
        modeList = []
        for key in numberDictionary:
            if numberDictionary[key] == maxValue:
                modeList.append(key)
            return modeList

def mean(enterNumbers):
    mean = 0
    for num in enterNumbers:
        mean += num
    return mean / len(enterNumbers)

#Define Main Function
def main():
    enterNumbers = list(map(int,input("Enter Numbers :  ").strip().split(' ')))[:]
    enterNumbers.sort()
    print("\n","     Number List     ","\n---------------------","\n",enterNumbers)
    print("\n","median, mode mean?","\n---------------------")
    answer = input()
    if answer == "median":
        answer = median
    elif answer == "mode":
        answer = mode
    elif answer == "mean":
        answer = mean
    print(answer(enterNumbers))


    
    
main()

标签: python

解决方案


您可以在这部分代码中使用“尝试除外”。一般会处理错误,即使用户键入字符串。

def main():
    try:
        enterNumbers = list(map(int, input("Enter Numbers :  ").strip().split(' ')))[:]
        enterNumbers.sort()
        print("\n", "     Number List     ", "\n---------------------", "\n", enterNumbers)
        print("\n", "median, mode mean?", "\n---------------------")
        answer = input()
        if answer == "median":
            answer = median
        elif answer == "mode":
            answer = mode
        elif answer == "mean":
            answer = mean
        print(answer(enterNumbers))
    except:
        print(0)

推荐阅读