1

我在使用 isspace 功能时遇到了困难。知道为什么我的代码错误以及如何修复它吗?

这是问题所在:实现 get_num_of_non_WS_characters() 函数。get_num_of_non_WS_characters() 有一个字符串参数,并返回字符串中的字符数,不包括所有空格。

这是我的代码:

def get_num_of_non_WS_characters(s):

    count = 0
    for char in s: 
        if char.isspace():
            count = count + 1  
        return count
4

4 回答 4

4

你想要空白,所以你应该使用not

def get_num_of_non_WS_characters(s):
    count = 0
    for char in s:
        if not char.isspace():
            count += 1
    return count

>>> get_num_of_non_WS_characters('hello')
5
>>> get_num_of_non_WS_characters('hello  ')
5

为了完整起见,这可以使用生成器表达式更简洁地完成

def get_num_of_non_WS_characters(s):
    return sum(1 for char in s if not char.isspace())
于 2017-10-31T19:17:28.747 回答
1

作为替代方案,您也可以简单地执行以下操作:

def get_num_of_non_WS_characters(s):
    return len(''.join(s.split()))

然后

s = 'i am a string'
get_num_of_non_WS_characters(s)

将返回10

这也将删除制表符和换行符:

s = 'i am a string\nwith line break'
''.join(s.split())

会给

'iamastringwithlinebreak'
于 2017-10-31T19:21:56.820 回答
1

@CoryKramer 答案的较短版本:

def get_num_of_non_WS_characters(s):
    return sum(not c.isspace() for c in s)
于 2017-10-31T19:22:17.280 回答
0

我只会使用 n=s.replace(" " , "") 然后使用 len(n)。否则,我认为您应该在 if 语句之后增加计数并在其中放入 continue 。

于 2017-10-31T19:22:13.430 回答