使用for循环计算百分比

时间:2017-10-06 00:51:11

标签: python python-3.x

我无法弄清楚如何使用" for循环"来计算输入中某些字母的百分比。我想计算字符串中X和Y的数量,并将输出作为百分比输出,但我想使用" for循环"为了它。

这是我迄今为止所能做到的:

def percent(string):
    counter = 0
    for stuff in string:
        if "X" in string:
            counter = counter + 1
        if "Y" in string:
            counter = counter + 1
            XY_percent = (counter / len(string)) * 100
    return "{}%".format(int(XY_percent))

我只想使用" for循环"为了这。

2 个答案:

答案 0 :(得分:1)

这就是你需要的,请注意缩进很重要......

def percent(string):
    counter = 0
    for stuff in string:
        if stuff == "X" or stuff == "Y":
            counter += 1
    XY_percent = (counter / len(string)) * 100
    return "{}%".format(int(XY_percent))

你也可以更简洁地做到这一点

XY_percent = sum(c in 'XY' for c in string) / len(string)

答案 1 :(得分:0)

if "X" in string是问题...只要字符串中至少有一个True,这始终是"X"

相反,单独测试每个字母。 (为清楚起见,我将stuff重命名为letter。)

def percent(text):
    counter = 0
    for letter in text:
        if letter == "X" or letter == "Y":
            counter += 1
    return "{}%".format(int(counter / len(text) * 100))

print(percent("XYZZZ"))  # 40%

修改

使用list comprehension和@ wim关于格式化百分比的提示:

def percent(text):
    return "{:.0%}".format(sum(letter in "XY" for letter in text) / len(text))