这个简单的元音计数器不起作用

时间:2015-05-27 00:31:41

标签: python

def counter(sentence):
a=0
e=0
i=0
o=0
u=0
for char in sentence:
    if char == 'a' or 'A':
        a += 1
    elif char == 'e' or 'E':
        e += 1
    elif char == 'i' or 'I':
        i += 1
    elif char == 'o' or 'O':
        o += 1
    elif char == 'u' or 'U':
        u += 1
return a, e, i, o, u

一切看起来都不错,但当我print counter("Hello how is your day going")时,它会返回(27, 0, 0, 0, 0)。 27是该句子中的字符总数,因此很明显,对于每个字符,for循环结束,它在第一个if条件之后停止并向{1加{ {1}},但我不知道为什么。

另外,在功能定义之后弄乱了缩进,不知道如何解决它,显然它不像程序中那样。

3 个答案:

答案 0 :(得分:2)

评估if语句时,评估为char == 'a''A'。由于'A'是布尔值True,因此会触发or运算符,并发生if语句。基本上,if语句被翻译为:

(char == 'a') or 'A'

示范

>>> char == 'a'
False
>>> 'A'
True
>>> True or False
True

答案 1 :(得分:1)

这是一个小提示!

if char == "a" or char == "A":
    a += 1 

答案 2 :(得分:1)

这是一种方法:

@RequestMapping(value = "/login", method = RequestMethod.GET)
public String login(ModelMap model, @RequestParam(value = "token", required = false) String token) {
    if(token==null) {
        return "redirect:403";
    } else if(token.isEmpty()) {
        return "redirect:403";
    } else {
        //perform token WS call to validate the token


        return "redirect:home";
    }
}


@RequestMapping(value = "/403", method = RequestMethod.GET)
public ModelAndView accesssDenied(Principal user) {

    ModelAndView model = new ModelAndView();
        model.addObject("msg",
                "You do not have permission to access this page!");
    model.setViewName("403");
    return model;

}