import random
def wordlist():
wordlistfile=open("dictionary.txt","r")
word_list=[]
for line in wordlistfile:
strip_line=line.strip("\n").lower()
word_list.append(strip_line)
return (word_list)
#I want to change the .lower() here to .upper() but it keeps breaking as soon as
#change it and have to keep changing it back. This function opens the word list
#file and converts into a comma seperated list.
def randomword(words_list):
word = random.randint(0, len(words_list)-1)
return words_list[word]
#This function picks a random integer in the range of the word list and uses that
#integer to call an indexed word
def hangingman (hangmanpictures, wrongletters, rightletters, random_word):
print(hangmanpictures[len(wrongletters)])
blanks = "_" * len(random_word)
for i in range(len(random_word)):
if random_word[i] in rightletters:
blanks = blanks[:i] + random_word[i] + blanks[i+1:]
for letter in blanks:
print(letter, end=" ")
print("\nWrong letters: ", end=" ")
print()
for letter in wrongletters:
print(letter, end=" ")
#function that runs the game
def guesses (guessed):
while True:
guess = input("\nGuess a letter: ")
guess = guess.lower()
if len(guess) != 1:
print("Please enter one letter at a time")
elif guess in guessed:
print("You have already tried that letter, please try again")
elif guess not in "qwertyuiopasdfghjklzxcvbnm":
print("Please enter an ENGLISH letter")
else:
return guess
#function that checks whether or not if a guess is a valid guess or not
#I was trying to change the guess into .upper() as well to match the character
#from the word that is randomly chosen from above, but something kept breaking
#and I had to change it back
def again():
choice = input("Do you want to play again? (Y or N): ").upper()
return choice
#wanna play again?
hangmanpictures = ['''
+----+
| |
|
|
|
|
=========''', '''
+----+
| |
O |
|
|
|
=========''', '''
+----+
| |
O |
| |
|
|
=========''', '''
+----+
| |
O |
/| |
|
|
=========''', '''
+----+
| |
O |
/|\ |
|
|
=========''', '''
+----+
| |
O |
/|\ |
/ |
|
=========''', '''
+----+
| |
O |
/|\ |
/ \ |
|
=========''']
print("Welcome to HANGMAN")
word_list = wordlist()
random_word = randomword(word_list)
wrongletters = ""
rightletters = ""
finishedgame = False
guessed = rightletters+wrongletters
print(random_word)
while True:
hangingman (hangmanpictures, wrongletters, rightletters, random_word)
playerguess = guesses(wrongletters + rightletters)
if playerguess in random_word:
rightletters = rightletters + playerguess
correctletters=True
for i in range(len(random_word)):
if random_word[i] not in rightletters:
correctletters=False
break
if correctletters:
print("You have found the correct word, congratulations!!! The hidden word was: \n {}".format(random_word))
finishedgame=True
else:
wrongletters = wrongletters + playerguess
if len(wrongletters) == len(hangmanpictures)-1:
hangingman (hangmanpictures, wrongletters, rightletters, random_word)
print("\nYou have lost. The word was: {}".format(random_word))
finishedgame=True
if finishedgame:
if again()=="Y":
wrongletters = ""
rightletters = ""
finishedgame = False
random_word = randomword(word_list)
else:
print("Press enter to quit the game.")
input()
break
在解决了前面的问题之后,我尝试使用.upper()将所有单词和用户输入大写,但是pythonshell一直给我一个名为AttributeError about for.upper之类的东西。你知道吗
我试过的是在def wordlist()函数中,我把strip\u行=线条.strip(“\n”).upper()并在def guesses(guessed)函数中输入guess=猜猜看。上()它不断地破裂。不过,当我把这些改回使用.lower()时,效果非常好。但为了美观起见,我希望它是大写字母,因为我认为大写字母比小写字母更好看。你知道吗
对于那些关心这个问题的人来说,我之前在这段代码中遇到的错误是,我没有在def wordlist()函数中放入.lower()。你知道吗
循环中有一个bug填补了hangingman的空白:
除了字符串的第一个字符外,您正在切掉所有字符。应该是的
注i代替1。你知道吗
为了在Python2.7和python3中运行这个程序,我做了一些小的编辑,现在它可以为我工作了。以上是唯一的逻辑变化。你知道吗
为了您将来的使用,我所做的只是运行程序,查看输出在何处出现异常,然后卡在print语句中跟踪值。如果你有病人,问问哪里疼。你知道吗
相关问题 更多 >
编程相关推荐