Home > OS >  Editing array - python
Editing array - python

Time:10-22

I'm trying to make Hangman game with arrays. But the arrays can't be edited. At first I was using the manual one without making a while loop like:

    z = 0
    r = "      "
    while z < len(word):
        r = r  grid[z] " "
        z = z   1

and I can easily print it like:

print("      " grid[0] " " grid[1] " " grid[2] " " grid[3] " " grid[4] " " grid[5])

But with this code the word letters can't be more and can't be less than 6

I want the word letters can be more than 6 or less than 6 so it will be more flexible

Here is the full code

import random
import os

c = "Y"

def print_Hangman():
    print("☠️☠️☠️ | HANGMAN GAME | ☠️☠️☠️")
    print(r)
    print("      Stationary")
    if (chances == 6):
        print("   _____ \n  |     | \n  |     | \n  |      \n  |      \n  |      \n  |      \n__|__\n")
    elif (chances == 5):
        print("   _____ \n  |     | \n  |     | \n  |     O \n  |      \n  |      \n  |      \n__|__\n")
    elif (chances == 4):
        print("   _____ \n  |     | \n  |     | \n  |     O \n  |     | \n  |      \n  |      \n__|__\n")
    elif (chances == 3):
        print("   _____ \n  |     | \n  |     | \n  |     O \n  |     |\ \n  |      \n  |      \n__|__\n")
    elif (chances == 2):
        print("   _____ \n  |     | \n  |     | \n  |     O \n  |    /|\ \n  |      \n  |      \n__|__\n")
    elif (chances == 1):
        print("   _____ \n  |     | \n  |     | \n  |     O \n  |    /|\ \n  |    /   \n  |      \n__|__\n")
    elif (chances == 0):
        print("   _____ \n  |     | \n  |     | \n  |     O \n  |    /|\ \n  |    / \ \n  |      \n__|__\n")
    global letters
    if (guessed_Letter > 0):
        if chances < 1:
            print("You Lose")
        else:
            letters = input("What letter do you think will be there: ")
    else:
        print("You Win")

while c == "Y":
    chances = 6
    word_List = ["pencil", "window", "rubber"]
    word = random.choice(word_List)
    guessed_Letter = len(word)

    n = len(word)
    grid = []
    while n > 0:
        grid.append("_")
        n = n - 1
    z = 0
    r = "      "
    while z < len(word):
        r = r  grid[z] " "
        z = z   1

    os.system('cls')

    while chances > 0 and guessed_Letter > 0:
        print_Hangman()
        while not len(letters) == 1:
            os.system('cls')
            print("Notif:\nLetter can't be empty or more than one!")
            print_Hangman()

        if (letters in word):
            i = 0
            while i < len(word) 1:
                if (grid[i] == letters):
                    os.system('cls')
                    print("Notif:\nYou have guessed it! ")
                    break
                if (word[i] == letters):
                    grid[i] = letters
                    guessed_Letter = guessed_Letter - 1
                
                i  = 1

                if i == len(word):
                    os.system('cls')
                    break
        else:
            os.system('cls')
            chances = chances - 1
    print_Hangman()
    c = input("Play Again [Y/N]: ")

the "print(r)" doesn't work it only prints "_ _ _ _ _ " when a letter is inserted I expect it to be like " _ _ _ I _"

CodePudding user response:

A bit difficult to read the full code. Try to implement this example that i did, it does the job, i hope it can help you.

#Word example pencil, but works for any word 
word = "pencil"

empty_spaces = []
leng_word = len(word)

#Create the spaces according to len 
for i in range(0,leng_word):
    empty_spaces.append("_")

guess_letter = input("Enter a letter")

#n to take the idex, there are other ways also
n=0

#This loop searchs the coincidence and replaces the word if true
for letter in word:
    if guess_letter == letter:
        empty_spaces[n]=letter
    n =1
print(empty_spaces)
  • Related