2016-12-03 7 views
0

私は学校プロジェクトのハングマンスクリプトを作成しています。コピーが別のスクリプトで動作しているにもかかわらず、1つの行が機能しないので、私は立ち往生しています(下にも含まれています)。ここでの主なコードがあります:コピーされたコードが同じ機能を果たさない(ハングマン)

def random_word(word_list): 
    global the_word 
    the_word = random.choice(word_list) 
    print (the_word) 
    print (".") 

def setup(): 
    global output_word 
    size = 0 
    for c in the_word: 
     size = size+1 
    output_word = size*"_ " 
    print (output_word, "("+str(size)+")") 

def alter(output_word, guessed_letter, the_word): 
    checkword = the_word 
    print ("outputword:",output_word) 
    previous = 0 
    fully_checked = False 
    while fully_checked == False: 
     checkword = checkword[previous:] 
     print ("..",checkword) 
     if guessed_letter in checkword: 
      the_index = (checkword.index(guessed_letter)) 
      print (output_word) 
      print (the_index) 
      print (guessed_letter) 
    # Line below just won't work 
      output_word= output_word.replace(output_word[the_index], guessed_letter) 
      print (output_word) 
      previous = the_index 
      fully_checked = True 

def guessing(): 
    global guessed_letter 
    guessed_letter = input("Enter a letter > ")  
    if guessed_letter in the_word: 
     alter(output_word, guessed_letter, the_word) 

ので

output_word= output_word.replace(output_word[the_index], guessed_letter) 

は_ _ _ _グラム_ _ _(ワードスイング用) のようなものを印刷することになっている行は、まだそれは

を印刷します

_g_g_g_g_g_g_g

は、これは完全な出力です:

costumed    #the_word 
. 
_ _ _ _ _ _ _ _ (8) #output_word + size 
Enter a letter > t 
outputword: _ _ _ _ _ _ _ _ 
.. costumed # 
_ _ _ _ _ _ _ _ 
3      # the_index 
t      #guessed_letter 
_t_t_t_t_t_t_t_t  #the new output_word 
は、まだこの異なるテストコードで、すべてが正常に動作します:

output_word = "thisworkstoo" 
the_index = output_word.find("w") 
guessed_letter = "X" 
output_word= output_word.replace(output_word[the_index], guessed_letter) 
print (output_word) 

出力: thisXorkstoo

答えて

0

置き換えが第二引数で最初の引数のすべてを置き換えます。だから、output_wordとき= _ _ _ _ _ _ _ _guessed_letterで一つ一つのアンダースコアに置き換えられます

output_word= output_word.replace(output_word[the_index], guessed_letter) 

言います。

だから私はこのようなものになります

output_word = list(output_word) 
output_word[the_index] = guessed_letter 
output_word = ''.join(i for i in output_word) 

シェルの例:これを行うには

>>> output_word = '_ _ _ _ _ _ _ _' 
>>> the_index = 3 
>>> guessed_letter = "t" 
>>> output_word = list(output_word) 
>>> output_word[the_index] = guessed_letter 
>>> output_word = ''.join(i for i in output_word) 
>>> output_word 
'_ _t_ _ _ _ _ _' 

アンでも良い方法は次のようになります。

output_word = output_word[:the_index] + guessed_letter + output_word[the_index+1] 
+0

これは、すべてのインスタンスを置き換えます単語の手紙の? – RnRoger

+0

あなたはそれが必要ですか?私はあなたにそれが何かを示すシェルの例を追加しました。 – rassar

+0

も更新された回答を参照してください – rassar

関連する問題