need help with some fundamentals of for loops. it looks like im so close to fully grasping grabbing an item out of a list, but not quite. examples below
need help with some fundamentals of for loops. it looks like im so close to fully grasping grabbing an item out of a list, but not quite. examples below
so ill post a few of my failed examples below along with what I came up with as a fix, and then the actual correct code. I feel like im so close to grasping this, but missing some logic. this is for a hangman game.
one of the failed attempts:
import random word_list = ["aardvark", "baboon", "camel"] chosen_word = random.choice(word_list) #Testing code print(f'Pssst, the solution is {chosen_word}.') #Create an empty List called display. #For each letter in the chosen_word, add a "_" to 'display'. #So if the chosen_word was "apple", display should be ["_", "_", "_", "_", "_"] with 5 "_" representing each letter to guess. display = ["_"] * len(chosen_word) guess = input("Guess a letter: ").lower() #If the letter at that position matches 'guess' then reveal that letter in the display at that position. #e.g. If the user guessed "p" and the chosen word was "apple", then display should be ["_", "p", "p", "_", "_"]. for letter in chosen_word: if guess == letter: for i in range(len(chosen_word)): display.insert(i, guess) print(display)
second:
for letter in chosen_word: if guess == letter: for i in range(len(chosen_word[letter])): display.insert(i, guess) I ended up just saying screw it and went to this: display = [] for char in chosen_word: if guess == letter: display += letter else: display += "_"
correct way of doing it:
import random word_list = ["aardvark", "baboon", "camel"] chosen_word = random.choice(word_list) print(f'Pssst, the solution is {chosen_word}.') display = [] word_length = len(chosen_word) for _ in range(word_length): display += "_" print(display) guess = input("Guess a letter: ").lower() for position in range(word_length): letter = chosen_word[position] if letter == guess: display[position] = letter print(display)
so as you can see, i get that I can grab specific parts of a list using indices or slices, but somewhere in my brain my logic is wrong. if you guys have struggled with this before or if you have a good youtube video to help me break it down id be beyond thankful!