[PythonCE] Re: [Tutor] Please critique my hangman.py program
Isr Gish
isrgish at fastem.com
Sun Jul 25 05:36:53 CEST 2004
Hi Alan,
[snip]
>> # Setup list to hold correct letters
>> correct_so_far = []
>> for i in range(word_length):
>> correct_so_far.append("_")
>
> correct_so_far = ['_'] * word_length
>
>But you could just use a string which is esier to print later:
>
> xcorrect_so_far = '_' * word_length
>
>> # Setup some other variables
>> incorrect = []
>> guesses = 0
>> letters_guessed = 0
>
> guesses, letters_guessed = 0, 0
>
>> # Start main game loop.
>> print "\nI am thinking of a word",word_length,"letters long"
>> while letters_guessed < word_length:
>>
>> # Print status of game on each pass.
>> print
>> print_status (correct_so_far,incorrect,guesses)
>>
>> # Get guess from user
>> while 1:
>> guess = raw_input("Which letter would you like to try?
>")
>> guess = string.lower(guess)
>> if len(guess) != 1:
>> print "You can only guess one letter at a time!"
>> elif guess in incorrect or guess in correct_so_far:
>> print "You've already tried that letter!"
>> elif guess not in
>["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","
>r","s","t","u","v","w","x","y","z"]:
>> print "That's not a valid letter."
>> else:
>> break
>> guesses = guesses + 1
>>
>> # Evaluate guess against word
>> letter_correct = 0
>> for i in range(word_length):
>> if guess == word[i]:
>> correct_so_far[i] = guess
>> letter_correct=1
>> letters_guessed = letters_guessed + 1
>
>Personally I'd use a while loop here:
>
> i,letter_correct = 0,False
> while i < word_length and not letter_correct:
> if guess == word[i]:
> correct_so_far[i] = guess
> letter_correct=True
> letters_guessed += 1
> i += 1
>
>Same length but I just think the test expresses the intention of
>the loop better.
I think that there may be a problem with this. For a word that has 2 of the same letter. The original way checks for that, while the latter way would make "letter_correct" = to "True" by the first pass andsthe while loop would terminate.
All the best,
Isr
[snip]
>
>Hope those ideas help. They are not definitively better just some
>alternatives.
>
>Alan G.
>
>_______________________________________________
>Tutor maillist - Tutor at python.org
>http://mail.python.org/mailman/listinfo/tutor
More information about the PythonCE
mailing list