python - 如果给定一个空列表,则返回“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()
解决方案
您可以在这部分代码中使用“尝试除外”。一般会处理错误,即使用户键入字符串。
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)
推荐阅读
- python - django 模型中的 OneToManyRelationship
- xmlhttprequest - REST 服务令牌的身份验证标头
- typescript - Return 语句比量角器中的代码更早执行
- asp.net-mvc - 仅为更新的文件创建 nuget 包
- maven - 无法使用 Gradle 插件在 Jenkins 中获取类型为 DefaultGroovyMavenDeployer 的对象的未知属性
- elasticsearch - Elasticsearch 查询 - 组合查询
- vue.js - Vuex mapState 设置状态
- sqlite - SQLite 返回的最小值大于最大值
- c++ - 无法编译 C++ 代码
- javascript - 跟踪html5视频控制区域中的点击播放按钮