Seth Bourque
Seth Bourque

Reputation: 1

Looping error (homework)

I'm having an issue with (apparently) a loop not working as intended. Assuming that everything else works as intended, my second while loop is (according to the grader) calling raw_input more times than necessary.

The code plays a word game. You can play a hand, replay a hand, or exit. Second loop determines if you play the hand or the computer.

All the called functions work correctly, but the loop, as I said is calling raw_input too many times.

Sorry if there are lots of other issues, I'm relatively new to coding.

userInput = ''
playInput = ''
hasPlayed = False

# while still playing, e exits
while userInput != 'e':

    userInput = raw_input("Enter n to deal a new hand, r to replay the last hand, or e to end game: ").lower()

    if userInput not in 'nre':

        print("Invalid command.")

    elif userInput == 'r' and hasPlayed == False:

        print("You have not played a hand yet. Please play a new hand first!")
        print

    else:

        while True:

           # 
            print
            playInput = raw_input("Enter u to have yourself play, c to have the computer play: ").lower()

            if playInput == 'u':

                print
                hand = dealHand(HAND_SIZE)
                playHand(hand, wordList, HAND_SIZE)
                hasPlayed = True

            elif playInput == 'c':

                print
                hand = dealHand(HAND_SIZE)
                compPlayHand(hand, wordList, HAND_SIZE)
                hasPlayed = True

            else:

                print("Invalid command.")
    print

Upvotes: 0

Views: 86

Answers (1)

Martijn Pieters
Martijn Pieters

Reputation: 1122392

Your loop is working perfectly fine; it is looping forever just like you told it to:

while True:

What is missing then, is a way to exit that loop. Either test for a different condition:

playing = True
while playing:
    # game
    #
    # stop playing with
    playing = False

or explicitly break out of the loop with the break keyword:

while True:
    # game
    #
    # stop playing with
    break

Upvotes: 2

Related Questions