まず第一に、私はプログラミングの初心者であることを覚えておいてください。
文字列内の子音を子音+「o」+子音に置き換える簡単なプログラムをPythonで作成しようとしています。たとえば、"b" は "bob" に置き換えられ、"d" は "dod" に置き換えられます (したがって、"python" という単語は "popytothohonon" に変更されます)。
これを行うために、b:bob、c:coc、d:dod などのペアを含む辞書を作成しました。次に、replace() コマンドを使用して単語を読み取り、子音を辞書内の翻訳に置き換えました。コード全体は次のようになります。
def replacer(text):
consonant='bcdfghjklmnpqrstvwxz'
lexicon={}
for x in range(0,len(consonant)):
lexicon[x]=(consonant[x]),(consonant[x]+'o'+consonant[x])
for i,j in lexicon.items():
text=(text.replace(i,j))
return text
今、この関数を呼び出そうとすると、次のエラーが発生します。
Traceback (most recent call last):
File "D:\x\x.py", line 37, in <module>
print(replacer("python"))
File "D:\x\x.py", line 17, in replacer
text=(text.replace(i,j))
TypeError: Can't convert 'int' object to str implicitly
しかし、私はintを使用していません!次のように「手動で」作成するとすべてが機能するため、辞書に何か問題があるに違いありません。
list={'b':'bob', 'c':'coc', 'd':'dod', 'f':'fof', 'g':'gog', 'h':'hoh'......}
しかし、「手作りではない」辞書を印刷すると、すべてが整っているように見えます。
{0: ('b', 'bob'), 1: ('c', 'coc'), 2: ('d', 'dod'), 3: ('f', 'fof')........
私は何を間違っていますか?