0
def main():
    #word = input("Word to guess for player 2:")
    word = ['h','e','l','l','o']
    word2 = "hello"
    #make a list of _ the same length as the word
    display =[]
    for i in range (0,len(word)):
        display.append("_")

    chances = int(input("Number of chances to guess word:"))
    if len(word)== 11:
        print ("Your word is too long. It has to be 10 charecters or less")
    else:
        word = word
    if chances < len(word):
        answer = input("Your word is {0} letters long , are you sure you don't want more chances? Yes or no?". format (len(word)))
        if answer == "no":
            chances= int(input("Number of chances:"))
        else:
            chances = chances
            ("Ok then lets continue with the game")
    print ("Player 2, you have {0} chances to guess the word.". format (chances))
    won = False
    underscore = False
    while chances > 0 and won == False and underscore == False:
        guess = input("Enter your guess: ")
        gC=False

        for i in range (0,len(word)):
            if guess == word[i]:
                gC=True
                display[i]=guess

        if not gC:
            chances = chances - 1

        display2 = ""
        for i in display:
            display2 = display2 + i + " "

何らかの理由で、ユーザーが推測し尽くすまでゲームが続行されるため、while ループを記述するとコードが機能しません。これを修正する方法について何か提案はありますか?

4

2 に答える 2

0

これは元の質問に対する回答ではなく、コード レビューのようなものですが、役に立つかもしれません。

word = list('hello')  # replaces manual splitting of string into letters

display = [ '_' ] * len(word)  # replaces build-up using for-loop

chances = input("Number ... ")  # already returns int if the user enters an int
                                # but will evaluate any valid python expression the
                                # user enters; this is a security risk as what
                                # ever is done this way will be done using your
                                # permissions
chances = int(raw_input("Number ..."))  # probably what you wanted

...
else:
    word = word  # does nothing.  remove this line and the "else:" above

chances -= 1  # replaces 'chances = chances - 1' and does the same

display2 = ' '.join(display)  # replaces the for-loop to build display2

さらに、より良い名前を使用することをお勧めします。display2orのような変数gCは、このコンテキストではあまり役に立ちません。プロのプログラミングでは、コードを保守しなければならない次の開発者のために (または主に) コードを書いていることを常に念頭に置く必要があります。そのため、読みやすく、理解しやすいものにします。displayStringまたはのような名前を選択してguessedCorrectlyください。

于 2013-05-08T18:20:19.730 に答える