def countConsonant (s):
"""Count consonants.
'y' and 'Y' are not consonants.
Params: s (string)
Returns: (int) #consonants in s (either case)
"""
# do not use a brute force solution:
# think of a short elegant solution (mine is 5 lines long);
# do not use lines longer than 80 characters long
# INSERT YOUR CODE HERE, replacing 'pass'
countConsonant = 0
for index in s:
if index == 'bcdfghjklmnpqrstvwxyz':
countConsonant += 1
return countConsonant
print (countConsonant ('"Carpe diem", every day.')) # should return 8
答案 0 :(得分:3)
==
检查是否平等,这可能不是你想要的。您必须使用in
运算符来检查成员资格,在这种情况下是字符串中字符的成员资格。它遵循这种通用语法:
if x in y:
其中x
是操作数或正在检查的操作数,y
中是否存在成员资格。将此应用于此案例,请将if
语句替换为:
if index in 'bcdfghjklmnpqrstvwxyz':
然后检查特定字符是否在给定的辅音字符串中。另外,有一点需要注意,你只检查小写。这意味着C
中的Carpe diem
被忽略,结果为9.忽略大小写尝试:
if index.lower() in 'bcdfghjklmnpqrstvwxyz':
这会在检查时将字符串设为小写。
答案 1 :(得分:0)
声明
for index in s:
你正在迭代s中的所有角色。条件
if index == 'bcdfghjklmnpqrstvwxyz':
永远评估为False
,并且函数在每种情况下都返回0。
要检查字符串中字符的成员资格,您需要使用in
运算符而不是==
,它会检查值的相等性。
如果您的算法与案例无关,则可以小写输入或将所有相应的大写字母添加到字符串'bcdfghjklmnpqrstvwxz'
。由于'y'
和'Y'
不是您要求的辅音,因此您需要从字符串y
中删除'bcdfghjklmnpqrstvwxyz'
。你的最终代码是
def countConsonant (s):
"""Count consonants.
'y' and 'Y' are not consonants.
Params: s (string)
Returns: (int) #consonants in s (either case)
"""
countConsonant = 0
for index in s.lower():
if index in 'bcdfghjklmnpqrstvwxz':
countConsonant += 1
return countConsonant
print (countConsonant ('"Carpe diem", every day.')) # should return 8