【发布时间】:2017-11-23 02:52:52
【问题描述】:
我需要定义一个函数,它接收一个字符串(可能包含数字、字母和/或特殊符号)并返回一个浮点数,其中包含考虑到字符串中所有数字从字符串中的最后一个位置开始计算的平均值,并且考虑所有数字(向后),直到找到一个字母或直到到达字符串的开头(如果它是数字,则包括字符串中的第一个字符以进行计算)。如果字符串中没有数字,或者如果在找到第一个数字之前找到了一个字母,则该函数应返回值 0.0。
例如,avgBackw("-1---2--A--3--4--") 应该返回 3.5,因为 4 和 3 的平均值是 3.5。
As an example, the following code fragment:
value = avgBackw("-1---2--A--3--4--")
print(value)
should produce the output:
3.5
这是我到目前为止最远的地方..我不知道从这里去哪里..
def avgBackw(lst):
rv = []
for n in lst[::-1]:
try:
rv.append(int(lst))
except:
return len(rv)
return len(rv)
【问题讨论】:
-
因此,如果您想获得平均值,您需要跟踪总和以及您遇到的位数。您可以使用
.isdigit()和.isalpha()来检查字符是数字还是字母。当你遇到一个数字时,你将它的值记录在 sum 中,当你遇到一个字母时,你就跳出循环。一旦你退出循环,你就会返回平均值,你可以使用你的总和和位数来计算。一定要考虑没有数字的情况,否则你会被零除。 -
向后求平均值的目的是什么,是特殊情况,例如 avgBackw("-1---2--A--3--04--") 假设产生 (40 +3)/2 = 21.5 或仅 3.5
-
如果我们有连续的数字比如--A-1--45--4怎么办
标签: python loops while-loop average