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}},但我不知道为什么。
另外,在功能定义之后弄乱了缩进,不知道如何解决它,显然它不像程序中那样。
答案 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;
}