python创建函数如何调用字典对象_我不知道如何用Python创建一个调用我函数的字典...
除了不传递值并尝试调用dict之外,您正在计算列表完全填充之前的平均值,在代码中,当您完成附加后,在循环外计算平均值:def posNumAvg(values):
pos = []
# average = 0 don't need to declare variable
for i in values:
if i > 0:
pos.append(i)
average = sum(pos)/len(pos) # only calculate once when done
return average
在allNumAvg中,您已经有了一个值列表,然后再创建一个完全相同的值的列表,只需使用值本身:
^{pr2}$
也可以使用列表理解:def num_list():
# "-9999" is the sentinel value which will break the loop if entered
values = [int(i) for i in iter(lambda:input("Enter any amount of numbers or -9999 to quit: "),"-9999")]
return values
def all_num_avg(values):
average = sum(values) / len(values)
return average
def pos_num_avg(values):
pos = [x for x in values if x > 0]
return sum(pos) / len(pos)
def non_pos_avg(values):
non = [i for i in values if i < 1]
return sum(non) / len(non)
values = num_list()
def store():
return {'all': all_num_avg(values), 'pos': pos_num_avg(values), 'def': non_pos_avg(values)}
我还使用下划线更改了函数名,它与pep-8 style guide一致
理想情况下,在获取用户输入时,最好使用try/except来捕获来自用户的错误输入:def num_list():
values = []
while True:
try:
inp = int(input("Enter any amount of numbers or -9999 to quit: "))
if inp == -9999:
return values
values.append(int(inp)) # any input that cannot be cast will raise a ValueError which we catch and then inform the user
except ValueError:
print("Invalid input")
return values
如果用户没有输入正数或负数,那么您还将得到一个zeroDivisionError,因此您还需要通过再次使用try/except或返回默认值(如果列表为空)来处理这种情况,我们可以使用默认值,因为我们已经验证了输入以确保是一个数字:def non_pos_avg(values):
non = [i for i in values if i < 1]
return sum(non) / len(non) if non else 0
所有这些都可以在一个函数中完成,在末尾更新dict并返回它:def store():
store_dict = {}
values = []
while True:
try:
inp = int(input("Enter any amount of numbers or -9999 to quit: "))
if inp == -9999:
break
values.append(int(inp))
except ValueError:
print("Invalid input")
pos = [x for x in values if x > 0]
non = [i for i in values if i < 1]
# catch cases where user does not enter a mixture of pos and negative nums of break on the first iteration
# if values etc.. will all evaluate to False for an empty list
store_dict["all"] = sum(values) / len(values) if values else 0
store_dict["pos"] = sum(pos) / len(pos) if pos else 0
store_dict["def"] = sum(non) / len(non) if non else 0
return store_dict
print(store())
因为您使用的是python3.4,所以我们也可以让statistics module来处理平均值:from statistics import mean
def store():
store_dict = {}
values = []
while True:
try:
inp = int(input("Enter any amount of numbers or -9999 to quit: "))
if inp == -9999:
break
values.append(int(inp))
except ValueError:
print("Invalid input")
pos = [x for x in values if x > 0]
non = [i for i in values if i < 1]
store_dict["all"] = mean(values) if values else 0
store_dict["pos"] = mean(pos) if pos else 0
store_dict["def"] = mean(non) if non else 0
return store_dict
根据您的评论,如果您想返回dict和列表,您可以同时返回并解压缩:def store():
store_dict = {}
values = []
while True:
try:
inp = int(input("Enter any amount of numbers or -9999 to quit: "))
if inp == -9999:
break
values.append(int(inp))
except ValueError:
print("Invalid input")
pos = [x for x in values if x > 0]
non = [i for i in values if i < 1]
store_dict["all"] = mean(values) if values else 0
store_dict["pos"] = mean(pos) if pos else 0
store_dict["def"] = mean(non) if non else 0
return store_dict,values
d, vals = store() # unpack
print(d, vals)
python创建函数如何调用字典对象_我不知道如何用Python创建一个调用我函数的字典...相关推荐
- python中字典的value可以为任意对象_手把手教你学Python之字典
字典是一种无序可变的容器,字典中的元素都是"键(key):值(value)"对, "键"和"值"之间用冒号隔开,所有"键值对&qu ...
- python数据符号函数等一切皆对象_第一章:Python高级编程-Python一切皆对象
第一章:Python高级编程-Python一切皆对象 Python3高级核心技术97讲 笔记 1. Python一切皆对象 1.1 函数和类也是对象,属于Python的一等公民 "" ...
- c++全局类对象_史上最全 Python 面向对象编程
面向对象编程和函数式编程(面向过程编程)都是程序设计的方法,不过稍有区别. 面向过程编程: 1. 导入各种外部库 2. 设计各种全局变量 3. 写一个函数完成某个功能 4. 写一个函数完成某个功能 5 ...
- python字典从头到尾_从头到尾开发并销售python API
python字典从头到尾 I recently read a blog post about setting up your own API and selling it. 我最近阅读了一篇有关设置和 ...
- python函数能否增强代码可读性_总结的几个Python函数方法设计原则
在任何编程语言中,函数的应用主要出于以下两种情况: 1.代码块重复,这时候必须考虑用到函数,降低程序的冗余度 2.代码块复杂,这时候可以考虑用到函数,增强程序的可读性 当流程足够繁杂时,就要考虑函数, ...
- python iterable对象_一篇文章看懂 Python iterable,
Python 中的 iterable, iterator 以及 generator,一直是非常亲密但是难以区分的概念.nvie 有一个很好的 帖子阐述了它们之间的关系,但是内容偏向于概括和总结,对于新 ...
- python爬虫需要调用什么模块_适合新手练习的Python项目有哪些?Python爬虫用什么框架比较好?...
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. Python爬虫一般用什么框架比较好?一般来讲,只有在遇到比较大型的需求时 ...
- python英语字典程序修改_详解如何修改python中字典的键和值
我们知道python中字典是无序的,它们都是通过hash去对应的.一般的如果我们需要修改字典的值,只需要直接覆盖即可,而修改字典的键,则需要使用字典自带的pop函数,示例如下: t = {} t['a ...
- r语言lm函数找不到对象_错误:在R中找不到函数....
在存在NAMESPACE的情况下,另一个问题是你试图从包foo运行一个未导出的函数. 例如(人为,我知道,但是):> mod plot.prcomp(mod)Error: could not ...
最新文章
- 如何找到自己的优势并坚定信念执行下去
- Dalvik与JVM区别
- [数据库]简单SQL语句总结
- CentOS 安装 VMware Tools 详细方法
- leetcode 593. Valid Square | 593. 有效的正方形(Java)
- endnote x9中科大版_文献管理软件Endnote的一些使用经验
- 用Python分析了20万场吃鸡数据,有不少有趣的发现
- 替换 Nginx 使用 Caddy 作为博客静态服务器
- php 数组重复最多,PHP获取数组中重复最多元素的简单示例
- ajax java base64 图片储存
- 3D Slicer Programmatically Set Slice Offset and Intersections 用代码修改Slicer中的切片偏移和交叉点显示...
- FIR滤波器——Matlab实现
- 电脑罗盘时钟html怎么设置成桌面,抖音网红款Word Clock罗盘时钟电脑桌面屏保设置教程-完整版...
- 程序员为什么要转行项目经理
- 人民币兑换菲律宾比索去哪些银行?
- short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?
- 陕西副市长猝死,其“豪宅”爆光震惊国人
- 一个软件公司需要多少前端_建一个微商城需要多少钱?
- ccsa安学网小程序_CCSA安学网题库及答案
- 年货来咯:精选年度最受欢迎干货,覆盖客户端、服务端、前端、数据、算法……...
热门文章
- 计算机上怎么带源地址ping,怎么带源地址去ping服务器
- linux mysql 修改root密码_MySQL忘了root密码,如何修改?
- Linux性能分析工具汇总
- SURF 与 SIFT的共同点与区别
- opencv基础:罗德里格斯旋转公式(Rodrigues' rotation formula)推导 rodrigues()函数原理
- 空格 路径_python处理Windows平台上路径有空格
- ie 出现 append无效
- ACdream区域赛指导赛之手速赛系列(7)
- 如何在EJB3中JNDI调用SessionBean(二)
- HDU2030 汉字统计【文本处理】