2017-10-08 6 views
0

私は怒っているように感じます。私はPythonを学んでいて、Al SweigartのAutomate the Boring Stuffからこのコードを得ました。これはPythonの本のコードです。コードはエラーを投げています。

def isPhoneNumber(text): 
    if len(text) !=12: 
     return False 
    for i in range(0, 3): 
     if not text[i].isdecimal(): 
      return False 
    if text[3] != '-': 
     return False 
    for i in range(4, 7): 
     if not text[i].isdecimal(): 
      return False 
    if text[7] != '-': 
     return False 
    for i in range(8, 12): 
     if not text[i].isdecimal(): 
      return False 
    return True 

print(isPhoneNumber("192-343-2345")) 

StringオブジェクトにはisDecimal関数がないため、結果はエラーであり、エラーを返します。私は入力をint型とString型にキャストしようとしましたが、問題は解決しません。私は間違ったコードをコピーしているわけではないので、何が起こっているのか分かりません。

+3

関数*がエラーを発生させて*エラーを発生させなければならない場合、何が問題なのですか?あなたは何を達成しようとしていますか? – jwodder

+0

あなたは 'isdigit'を意味しましたか? – jonrsharpe

答えて

2

このコードは、Python上で正常に動作します3.あなたは、文字列オブジェクトを言っにおける正しい

は、Pythonにはisdecimal機能を持っていない2.

あなたは

def isPhoneNumber(text): 
    if len(text) !=12: 
     return False 
    for i in range(0, 3): 
     if not text[i].isdigit(): 
      return False 
    if text[3] != '-': 
     return False 
    for i in range(4, 7): 
     if not text[i].isdigit(): 
      return False 
    if text[7] != '-': 
     return False 
    for i in range(8, 12): 
     if not text[i].isdigit(): 
      return False 
    return True 

print(isPhoneNumber("192-343-2345")) 
のPython 2に isdigitを使用する場合、それは動作します
関連する問題