我正在尝试用Python编写代码,找到给定字符串中字母表的百分比。例如,
percent("ab", "aabccdef")
应该[("a", 25), ("b", 13)]
,因为'a'
在长度为8的字符串中出现两次,因此其百分比为round(2 / 8)
或25。
同样,'b'
只出现一次。所以它的百分比是round(1 / 8)
,或者13。
这是我的代码。有人可以帮我调试吗?
def Percent(alpha, string):
y = [e for e in string if e == alpha]
x = len(y)
return (alpha, round((x / len(string) * 100)))
答案 0 :(得分:3)
你很接近,但关键的区别是你需要为c
中的每个角色alpha
计算它:
def percent(alpha, string):
results = []
for c in alpha:
y = [e for e in string if e == c]
x = len(y)
results.append((c, round((float(x) / len(string)*100))))
return results
在您的代码中,您要比较e == alpha
,但alpha
是字符串ab
,而e
是字符串中的单个字符。这不会给你你想要的结果。
此外,如果您希望正确计算百分比,则需要将x
转换为float
。在Python中,如果你写3 / 4
,你将获得0
而不是0.75
。要防止这种情况,您需要将至少一个参数转换为float
,这可以通过调用float()
来完成。所以你也可以写x / float(len(string)*100)
来确保你不会得到一个整数。
答案 1 :(得分:3)
另一种方法是,您可以在列表解析中使用str.count
:
>>> alpha = 'ab'
>>> string = 'aabccdef'
>>> [(x, string.count(x)/len(string)) for x in alpha]
[('a', 0.25), ('b', 0.125)]