Profilo di Harrypotter

Nome Harrypotter
Indirizzo email n/a
Messaggi2
  • Re: AttributeError: partially initialized module 'pygame' has no attribute 'init' (most likely due to a circular import)
    Forum >> Programmazione Python >> Videogames
    Thank you soo much!!! its working...
  • Re: Python Hangman Game Program Error
    Forum >> Programmazione Python >> Videogames
    Hi Gulshan, I don't speak English, the following text is produced by google translator, sorry for any poor language skills




    If you want help, learn how to format the code using the appropriate button ("<>") in the post editor , how you expose it is difficult to understand.
    It would also be appropriate to report the traceback received ... things already indicated in previous post.




    Coming to your code, it has several critical issues:
    the most serious is the "count += 1: " code present in the "hangman" function, the ":" character generates a syntax error
    Another criticality is given by the "while play :" line in the "play_hangman" function, since the "play" variable is not initialized, therefore it cannot be used.

    The code itself is very questionable, in particular with regard to instructions such as "if count == 1 :" and related print, as well as the mode of intercepting user input which, however, stops at the first occurrence of the entered character.

    I am attaching below a rehash to make your code functional at a minimum, I haven't studied it well and it is limited to what I understand it is needed, but it should work anyway; see and understand the differences in logic

    import random 
    import time 
    import os 
    
    
    def play_again (): 
        question = 'Do You want to play again? y = yes, n = no \n' 
        play_game = input (question) 
        while play_game.lower() not in [ 'y' , 'n' ]: 
            play_game = input (question) 
    
        if play_game.lower() == 'y ' : 
            return True 
    
        return False 
    
    
    def hangman(word): 
        display = '_' * len(word) 
        count = 0 
        limit = 5 
        letters = list(word) 
        guessed = [] 
        print(f'You have {limit} possible errors...\n') 
        while count < limit: 
            guess = input(f'Hangman Word: {display} Enter your guess:\n').strip() 
            if len(guess) != 1 : 
                print ( 'Invalid input. Enter a single letter \n' ) 
                continue 
            if guess in guessed: 
                print ( 'Oops! You already tried that guess, try again!\n' ) 
                continue 
    
            if guess in letters: 
                letters.remove(guess) 
                for i in range(len(word)): 
                    if word [ i ] == guess: 
                        display = display[:i] + guess + display[i+1:] 
                print (' ' + '*' * (limit - count), 
                       f '\n Good guess: {limit - count} guesses remaining\n') 
            else : 
                guessed.append(guess) 
                count += 1 
                print (' ' + '*' * (limit - count), 
                       f'\n Wrong guess : {limit - count} guesses remaining\n') 
            time.sleep(1) 
            if display == word: 
                print ( f'Congrats! You have guessed the word \' {word} \' correctly!' ) 
                break 
            if count == limit: 
                print ('\nThe word was: {word} ' ) 
                break 
    
    
    def play_hangman (): 
        print ( ' \nWelcome to Hangman\n' ) 
        name = input ( 'Enter your name: ' ) 
        print ( f'Hello {name} ! Best of Luck!' ) 
        time.sleep( 1 ) 
        print ('The game is about to start!\nLet\'s play Hangman!' ) 
        time.sleep( 1 ) 
        os.system( 'cls' if os.name == 'nt' else 'clear' ) 
        words_to_guess = ['january' , 'border' , 'image' , 'film' , 'promise' , 'kids' , 
                          'lungs' , 'doll' , 'rhyme' , 'damage' , 'plants' ,'hello'] 
        play = True 
        while play: 
            word = random.choice(words_to_guess) 
            hangman(word) 
            play = play_again() 
    
        print ( 'Thanks For Playing! We expect you back again!' )
        exit() 
    
    
    if __name__ == '__main__' : 
        play_hangman()
    I hope it can help you

    edit : I realized, now, that the post editor has altered the code, I corrected it


    --- Last edited by nuzzopippo on 2023-05-05 14:50:21 --- very informative