【发布时间】:2019-02-04 22:09:30
【问题描述】:
这里有个问题要解决就是了
给你一串 0-9 之间的数字。找到这些数字的平均值,并将其作为一个整数(即:没有小数位)返回,以字符串形式写出。例如:
“零九五二”->“四”
这是我的代码
from math import floor
x = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight','nine']
def average_string(s):
s = s.split(' ')
dnumber = {k: i for i, k in enumerate(x)}
converter = [l for n, l in dnumber.items() for i in s if n == i]
floorN = floor(sum(converter) - len(converter))
for i,k in dnumber.items():
if k == floorN:
return i #<--is this the problem?
print(average_string("zero nine five two"))
为什么它返回 None 还有另一种方法比较并从 dict.items() 中返回一个值
【问题讨论】:
-
如果
k永远不等于floorN,则函数返回None。在这种情况下你应该返回一些东西(在 for 循环的末尾) -
另外,使用这样的字典是可疑的。
-
我是如何让这个偏离轨道的 smh
-
你的平均公式是错误的:使用
floor(sum(converter) / len(converter)) -
谢谢你我完全忘记了那是当你很快看一个公式而不注意但你为什么说使用这样的字典很可疑我有兴趣知道另一种方式@Jean-FrançoisFabre
标签: python-3.x list dictionary return