Reputation: 55
I have been trying to code a hangman game but couldn't do it because there seems to be an error with my if requests, because he dosn't detect a valid Letter in the word although there is .
please tell me if i can give you any more information. looking forward to hearing from yall and i am really interested in the skills i can learn:D
import random
import string
def check_guess(guess):
try:
str(guess)
return True
except:
return False
def check_lvl(difficulty):
try:
int(difficulty)
return True
except:
return False
def ask_for_difficulty(force_valid_input):
while True:
difficulty = input("Please choose your difficulty Level, starting from level 1 to 3: ")
if check_lvl(difficulty) and difficulty == '1' or difficulty == '2' or difficulty == '3':
return int(difficulty)
else:
if not check_lvl(difficulty):
return None
print("wrong input")
def get_words():
print("Loading word list from file...")
f = open("/home/hiighq/Desktop/VisualCode/hangman-python-shirelkatz/countries-and-capitals.txt", 'rb', 0)
content = f.readline
wordlist = []
for content in f:
wordlist.append(content.strip())
print (" ", len(wordlist), "words loaded.")
f.close
return wordlist
def choose_word(wordlist):
return str(random.choice(wordlist))
wordlist = get_words()
word_to_guees = choose_word(wordlist)
pos_of_line = word_to_guees.rfind("|")
pos_of_point = word_to_guees.rfind("'")
secretWord = word_to_guees[pos_of_line+2:pos_of_point]
def is_word_guessed(secretWord, lettersGuessed):
count = 0
for i, c in enumerate(secretWord):
if c in lettersGuessed:
count += 1
if count == len(secretWord):
return True
else:
return False
def get_guessed_word(secretWord, lettersGuessed):
count = 0
blank = ["_ "] * len(secretWord)
for i, c in enumerate(secretWord):
if c in lettersGuessed:
count += 1
blank.insert(count-1,c)
blank.pop(count)
if count == len(secretWord):
return ''.join(str(e)for e in blank)
else:
count +=1
blank.insert(count-1, '_')
blank.pop(count)
if count == len(secretWord):
return ''.join(str(e) for e in blank)
def get_availible_letters(lettersGuessed):
alphabet = ['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']
alphabet2 = alphabet[:]
def removeDupsBetter(L1, L2):
L1Start = L1[:]
for e in L1:
if e in L1Start:
L2.remove(e)
return ''.join(str(e) for e in L2)
return removeDupsBetter(lettersGuessed, alphabet2)
def set_difficulty(difficulty):
lives = int
if difficulty == 1:
lives = 8
print("At level 1, you will have ",(lives), "lives!")
return lives
elif difficulty == 2:
lives = 5
print("At level 2, you will have ",(lives), "lives!")
return lives
elif difficulty == 3:
lives = 3
print("At level 3, you will have ",(lives), "lives!")
return lives
def hangman(secretWord):
intro = len(str(secretWord))
lettersGuessed= []
guess = str
mistakesMade = 0
wordGuessed = False
difficulty = int
print("Welcome to the hangman game!")
difficulty = ask_for_difficulty(True)
lives = set_difficulty(difficulty)
print("-----------------------------------------------")
print("I am thinking of a word with ",intro," letters!",secretWord)
while lives > 0 and mistakesMade <= lives and wordGuessed is False:
if secretWord == get_guessed_word(secretWord, lettersGuessed):
wordGuessed = True
break
print("You have",str(lives)," guesses left.")
print("Available letters: ", get_availible_letters(lettersGuessed))
guess = input("Please guess a letter: ").lower
if str(guess) in secretWord: #checks if input is in secretword
if str(guess) in lettersGuessed:
print("Looks like you have already tried this letter: ", get_availible_letters(lettersGuessed))
print("-----------------------------------------------")
else:
lettersGuessed.append(guess)
print("Good guess: ", get_guessed_word(secretWord,lettersGuessed))
else:
if str(guess) in lettersGuessed:
print("Looks like you have already tried this letter: ", get_availible_letters(lettersGuessed))
print("-----------------------------------------------")
else:
lettersGuessed.append(guess)
lives -= 1
mistakesMade += 1
print("That letter is not in the word! You have ", lives," left.",get_guessed_word(secretWord,lettersGuessed))
if wordGuessed == True:
return ("Congratz you won!:D")
elif lives == 0:
print("You ran out of lives. the word was", secretWord)
hangman(secretWord)
Upvotes: 2
Views: 480
Reputation: 2880
The problem arises in your removeDupsBetter
method. You are trying to remove an element from L2
which is not present in L2
.
Maybe you actually meant to do this:
def removeDupsBetter(L1, L2):
L1Start = L1[:]
for e in L1:
// Checking if element is present in L2 before removing it.
if e in L2:
L2.remove(e)
return ''.join(str(e) for e in L2)
Upvotes: 2