2016-07-31 11 views
-5

私はコーディングが新しく、この関数は文字列または文章内のすべての文字を小文字にし、空白なしですべての文字を集めることです。このコードは私のpython 3.5で動作しません

def toChars(s): 
    import string 
    s = string.lower(s) 
    ans = '' 
    for c in s:  
     if c in string.lowercase: 
      ans = ans + c 
     return ans 

toChars("Test") 

が得られます。そして、私は(輸入文字列)を理解することができ、それは彼らのpython 2.7を使用している(MIT COURSE)の映像でよく働いていた......私はそれをコピーしようとしたが...エラー:

AttributeError: module 'string' has no attribute 'lower'

+0

@DeepSpace中括弧が意図的ではなく、コードに問題がありませんでしたか? – Li357

+2

'return'のインデントが間違っています。 – Daniel

+1

そのコースは_really_ oldと聞こえます。 Python 2.7がリリースされるずっと前の 'string.lower'と同様の関数は、古くから廃止されています。例えば ​​'s = s.lower()'のように、 'str.lower'メソッドを使用する必要があります。 –

答えて

1

は交換してください:

s = string.lower(s) 

で:

s = s.lower() 

これは、新しいPythonバージョンでは正しい方法です。また

、変更:

  if c in string.lowercase: 

へ:OPで述べたように

  if c.islower(): 

はあなたにもreturn文のインデントを修正する必要がありますコメントしています。

関連する問題