我无法弄清楚如何使用" 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循环"为了这。
答案 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))