2016-12-11 16 views
0

ord()chr()の文字をASCII値に変換する関数と、その逆の関数を使用して、入力された文字が大文字か小文字かをチェックするラボを与えられました。私はその部分を削除しましたが、2番目の部分は文字列の大文字を再帰的に小文字に変更することです。文字列内の文字を再帰的に小文字に変更するにはどうすればよいですか?

など。動作するようになっていますかの:私はマッピング機能または何を使用する必要がある場合

>>> lowercase("Hello") 
hello 

それはちょっと紛らわしいですが、私は知りません。私は動作するようになっていますかのアイデアを持っている

def lowercase(word): #accepts a string 
    if word == []: #base case 
     return [] 
    else: 
     letter = ord(word[0])  #converts first character to ASCII Value 
     if letter in range(65, 91):  #Checks if character is uppercase (ASCII uppercase Values) 
      return chr(letter + 32) + lowercase(word[1:])  #converts letter to lower case by adding 32 
     elif letter in range(97, 123):  #if letter is lowercase return the letter (ASCII lowercase Values) 
      return chr(letter) + lowercase(word[1:]) 

WORD = str(raw_input("Enter a word: ")) 
print lowercase(WORD) 

が、そのコードは明らかに正しくありません:

は、ここで私が持っているものです。私は間違って何をしていますか?

+0

コードに「magic numbers」は避けてください。 'A' <=文字 '=' Z ''などの場合は、範囲内の文字がある場合は(65、91) ' – DyZ

+2

ベースケースを確認してください。 – Iluvatar

+0

@DYZ - OPは 'ord'と' chr'を使用する必要があります。つまり 'letter'は文字の整数表現です。 – TigerhawkT3

答えて

0

あなたの基本ケースは正しくありません。空の文字列ではなく、空の文字列をチェックする必要があります。

if word == '': #base case 
    return '' 
関連する問題