Hi, I was wondering if anyone could help me with the output of this simple hangman game? It's returning different values to what I would expect. I believe the issue is where a letter is found in the string, under the else in the second if statement. Any help would be great! Thanks :D Andrew #Issue = The variable word increases without expectation?(Using Python 3)
import random
welcome = input("Welcome to hangman, are you ready to play?").strip()
words = ["eggs"]
no_attempts = 10
if welcome == "yes" or "Yes" or "y" or "Y" or "okay":
print(("That's great, let's get started! You have {} tries to find the word!").format(no_attempts))
word_is = random.choice(words)
length_of_word = int(len(word_is))
word = ("."*length_of_word)
print(word)
while no_attempts > 0:
if "." in word:
first_letter = (input("Choose a letter").lower())
position_of_letter = int(word_is.find(first_letter))
if position_of_letter == -1:
no_attempts = no_attempts - 1
print ("That letter is not in the word, try again!")
print(word)
guess = input("Would you like to guess the full word itself?").strip().lower()
if guess == "no":
continue
elif guess != word_is:
no_attempts = no_attempts - 1
print("Wrong! Try guessing another letter")
continue
elif guess == word_is:
well_done = ("Well Done! You have the word!").format(word_is)
print(well_done)
break
else:
no_attempts = no_attempts - 1
print("That's great, that letter is in the word!")
where_inside_list = []
position = 0
while position < len(word_is):
position = word_is.find(first_letter, position)
if position == -1:
break
where_inside_list.append(position)
position += 1 #position = position + 1
answer_list = list(word)
no_items_list = int(len(where_inside_list))
print(where_inside_list)
print(answer_list)
print(word)
target = ([first_letter]*no_items_list)
for x,y in zip(where_inside_list, target):
answer_list[x] = y
word = " ".join(answer_list)
print(word)
#word = word[:position_of_letter] + first_letter + word[position_of_letter + 1:]
#print(word)
guess = input("Would you like to guess the word?").strip().lower()
if guess == "no":
continue
elif guess != word_is:
no_attempts = no_attempts - 1
print("Wrong! Try guessing another letter")
continue
elif guess == word_is:
print("Well Done! You have the word!")
break
elif "." not in word:
congrats = ("Congratulations, well done! The word is {}").format(word)
print(congrats)
break
else:
no_goes = ("Oh, no! It seems you are out of goes. The word was {}").format(word_is)
print(no_goes)
elif welcome != "yes" or "y" or "okay":
print("Oh no, okay, well see you next time!")
