2017-10-31 7 views
0

isspace関数に問題があります。なぜ私のコードが間違っていて、それを修正するのか?Python 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 
+3

... –

+1

2つのこと: 'ていない場合は(char.isspace)' return文のインデントを解除します。あなたは現在( 'return'のインデントが固定されている場合)、空白文字の数を返します。 –

答えて

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()) 
+2

'返されたsum(charにはchar.isspace()ではなく)' s? – thebjorn

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' 
0

私は、単にn = s.replace( ""、 "")とlen(n)を使います。 それ以外の場合は、if文の後にカウントを増やして、その中にcontinueを入れてください。

+0

'str.isspace()'は単に ""をチェックするだけではありません。 – kindall

+0

これは、スペースcharと等しくない文字の数だけをカウントし、タブ、改行などのように、カウントから他の空白を除外しません。 –

1

@CoryKramerの答えの短いバージョン:そのインデントが正しい場合は、最初の反復であなたのfuncitonから戻ってきている

def get_num_of_non_WS_characters(s): 
    return sum(not c.isspace() for c in s)