Pythonの文字列スライスを使用して特定の位置に文字を追加/置換する
イントロ
この記事では、ハンマンの古典的なゲームを使用して別の文字の文字列を置換する方法を示します.これはかなり簡単でなければならないようですが、実際にはややトリッキーです.私はゲームコード、私が遭遇した主な問題、およびその問題への解決策を示すつもりです.
ゲーム
すべてのコードは、
再生すると、ゲームはこのような単一の文字として正しい推測を印刷しました.第2の推測が
解決策
この問題を覚えておくべき重要なことは、Pythonの文字列が不変であることです.文字を文字列に置換または追加するには、Pythonは文字列のコピーを作成し、そのコピーに文字を置換する必要があります.
次の3行のコードがこの関数を提供します.
この値を使用すると、2行目は
あなたが
問題解決?いいえ.
“Hello”という単語は2つの“L”です.すべての最初の“L”の期待通りに動作します.ゲームは印刷されます.しかし、第2の「L」が推測されるときに、ゲームは第1の「L」で止まって、印刷し続ける.
上のコードの3行目はこれを解決します.
それを置き換える代わりに特定の位置に文字を追加するには、最終的なスライスで
この記事では、ハンマンの古典的なゲームを使用して別の文字の文字列を置換する方法を示します.これはかなり簡単でなければならないようですが、実際にはややトリッキーです.私はゲームコード、私が遭遇した主な問題、およびその問題への解決策を示すつもりです.
ゲーム
word = "hello"
perm_word = "hello"
blank = "-" * len(word)
count = len(word) * 2
print(f"This is a hangman game. Can you guess the word: {blank} in 10 tries?")
while blank != perm_word and count != 0:
guess = input("Guess a letter: ")
if len(guess) > 1:
print("Type a single letter.")
continue
for char in guess:
if char in word:
i = word.find(char)
blank = blank[:i] + char + blank[i+1:]
word = word[:i] + "-" + word[i+1:]
count -= 1
print(blank)
print(f"Correct! You have {count} tries left.")
else:
count -= 1
print(f"Wrong. You have {count} tries left.")
if count != 0:
print("You win!")
else:
print("You lose.")
問題すべてのコードは、
blank
のDashを置き換える行を除き、word
から適切に推測された文字で実行されました.再生すると、ゲームはこのような単一の文字として正しい推測を印刷しました.第2の推測が
e
であるならば、ゲームはh
の代わりにeh
を印刷します.解決策
この問題を覚えておくべき重要なことは、Pythonの文字列が不変であることです.文字を文字列に置換または追加するには、Pythonは文字列のコピーを作成し、そのコピーに文字を置換する必要があります.
次の3行のコードがこの関数を提供します.
i = word.find(char)
blank = blank[:i] + char + blank[i+1:]
word = word[:i] + "-" + word[i+1:]
最初の行は推測された文字のインデックス値を取得します.この値を使用すると、2行目は
he
で推測された文字の前にすべてのインデックス値を選択することによってblank
のダッシュをスライスします.それから、それは推測された性格と終わりスライスでこの最初のスライスを連結します.blank[:i]
は最終的なスライスです.それは推測された文字の後の残りのインデックス値の全てを選びます.あなたが
blank[i+1:]
ゲームを推測するならば、現在は印刷します:e
.問題解決?いいえ.
“Hello”という単語は2つの“L”です.すべての最初の“L”の期待通りに動作します.ゲームは印刷されます.しかし、第2の「L」が推測されるときに、ゲームは第1の「L」で止まって、印刷し続ける.
上のコードの3行目はこれを解決します.
-e---
の代わりに-el--
で動作する以外は、前の行と同様に機能します.本質的に、これは文字が推測されるように、2つの変数がそれらの値を交換するのを作ります.-el--
が推測されるならば、word
とblank
の値は以下のようになります.l
blank
第2のword
が推測される現在、blank = "--l--"
は1つのword = "he-lo"
だけを含んでいます.ゲームの機能として.l
とword
の値は以下のようになります.l
blank
文字の追加それを置き換える代わりに特定の位置に文字を追加するには、最終的なスライスで
word
からblank = "--ll-"
を削除します.たとえば、word = "he--o"
がコードの次の行を推測した場合、word = word[:i] + "-" + word[i:]
print :+1
読書ありがとう!Reference
この問題について(Pythonの文字列スライスを使用して特定の位置に文字を追加/置換する), 我々は、より多くの情報をここで見つけました https://dev.to/josephmads/using-pythons-string-slicing-to-addreplace-characters-in-specific-positions-1ed5テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol