基本python代码中的编程错误

时间:2014-12-02 18:39:51

标签: python

我正在编写简单的python代码:

Question:
Given a list of strings, return the count of the number of
# strings where the string length is 2 or more and the first
# and last chars of the string are the same.

我工作的解决方案:

def match_ends(words):
    for items in words:
        count = 0
        los = len(items)
        first_char= items[0]
        last_char= items[los-1]
        if los >=2 and first_char is last_char:
            count = count+1
        else:
            count = count

    print count
    return

def main():
    print 'match_ends'
    match_ends(['aba', 'xyz', 'aa', 'x', 'bbb'])

我一直在以1为单位获得答案,我认为它并非完全循环。错误在哪里

3 个答案:

答案 0 :(得分:3)

我会使用==运算符来比较字符而不是is关键字。此外,您可以使用[-1]索引从后面切片以获取最后一个字符,而不是基本上执行[len-1]。您还在每个循环开始时将count重置为0(同时count已经是函数名称,请尽量避免命名具有相同名称的变量)

话虽如此,以下是针对上述内容的可读性和修复方面的一些变化。

def matches(words):
    total = 0
    for word in words:
        if (len(word) > 1) and (word[0] == word[-1]):
            total += 1
    return total

>>> matches(['aba', 'xyz', 'aa', 'x', 'bbb'])
3

答案 1 :(得分:3)

另一种更简洁的方法就是:

sum(1 for s in words if len(s) > 1 and s[0] == s[-1])

答案 2 :(得分:1)

原因是您需要在行for items in words:

之前放置count = 0