当我尝试运行代码时,我一直收到EOF错误。我想知道如何解决这个问题?在此先感谢。当我尝试删除if_name_时,程序没有任何语法错误,但它没有运行。
以下链接显示错误:codepad.org/d5p1Mgbb
def get_secret_word():
while True:
secret_word = input('Please enter a word to be guessed\nthat does not contain ? or whitespace:')
if not ('?' in secret_word or ' ' in secret_word or secret_word == '' ):
return secret_word
def is_game_over(wrong_guess,secret_word,output,chars_guessed):
if wrong_guess == 7:
print('You failed to guess the secret word:',secret_word)
return True
for guess in secret_word:
if guess in chars_guessed:
output += guess
else:
output += '?'
if not('?' in output):
print('You correctly guessed the secret word:',secret_word)
return True
else:
return False
def display_hangman(wrong_guess):
if wrong_guess == 1:
print('\n |')
elif wrong_guess == 2:
print('\n |','\n 0')
elif wrong_guess == 3:
print('\n |','\n 0','\n |')
elif wrong_guess == 4:
print('\n |','\n 0','\n/|')
elif wrong_guess == 5:
print('\n |','\n 0','\n/|\\')
elif wrong_guess == 6:
print('\n |','\n 0', '\n/|\\','\n/')
elif wrong_guess == 7:
print('\n |','\n 0','\n/|\\','\n/','\\')
def display_guess(secret_word,chars_guessed):
print("")
output = ''
for guess in secret_word:
if guess in chars_guessed:
output += guess
else:
output += '?'
if '?' in output:
output += '\nSo far you have guessed: '
for guess in chars_guessed:
output += guess + ","
print(output.strip(","))
def get_guess(secret_word,chars_guessed):
while True:
guess_letter = input('Please enter your next guess: ')
if guess_letter == '':
print('You must enter a guess.')
continue
elif len(guess_letter) > 1:
print('You can only guess a single character.')
elif guess_letter in chars_guessed:
print('You already guessed the character:',guess_letter)
else:
return guess_letter
def main():
wrong_guess = 0
chars_guessed = []
secret_word = get_secret_word()
output=''
while not(is_game_over(wrong_guess,secret_word,output,chars_guessed)):
display_hangman(wrong_guess)
display_guess(secret_word, chars_guessed)
guess_character = get_guess(secret_word, chars_guessed)
chars_guessed.join(guess_letter)
chars_guessed.sort()
if not guess_letter in secret_word:
wrong_guess += 1
return wrong_guess
pass
if __name__ == '__main__':
main()
答案 0 :(得分:0)
我发现的一些事情......
guess_character
和guess_letter
似乎是同一个变量,但在定义之前使用guess_letter。 input
允许输入变量名或任何python代码块。要将输入用作字符串,您必须强制输入字符串或(更容易)使用raw_input
join
操作。这是不可能的。您可以使用append
将项目添加到列表中。 所以,这里的代码有一些修复。你必须修复打印循环,但它应该更好,让你超越早期的错误。
def get_secret_word():
while True:
secret_word = raw_input('Please enter a word to be guessed\nthat does not contain ? or whitespace:')
if not ('?' in secret_word or ' ' in secret_word or secret_word == '' ):
return secret_word
def is_game_over(wrong_guess,secret_word,output,chars_guessed):
if wrong_guess == 7:
print('You failed to guess the secret word:',secret_word)
return True
for guess in secret_word:
if guess in chars_guessed:
output += guess
else:
output += '?'
if not('?' in output):
print('You correctly guessed the secret word:',secret_word)
return True
else:
return False
def display_hangman(wrong_guess):
if wrong_guess == 1:
print('\n |')
elif wrong_guess == 2:
print('\n |','\n 0')
elif wrong_guess == 3:
print('\n |','\n 0','\n |')
elif wrong_guess == 4:
print('\n |','\n 0','\n/|')
elif wrong_guess == 5:
print('\n |','\n 0','\n/|\\')
elif wrong_guess == 6:
print('\n |','\n 0', '\n/|\\','\n/')
elif wrong_guess == 7:
print('\n |','\n 0','\n/|\\','\n/','\\')
def display_guess(secret_word,chars_guessed):
print("")
output = ''
for guess in secret_word:
if guess in chars_guessed:
output += guess
else:
output += '?'
if '?' in output:
output += '\nSo far you have guessed: '
for guess in chars_guessed:
output += guess + ","
print(output.strip(","))
def get_guess(secret_word,chars_guessed):
while True:
guess_letter = raw_input('Please enter your next guess: ')
if guess_letter == '':
print('You must enter a guess.')
continue
elif len(guess_letter) > 1:
print('You can only guess a single character.')
elif guess_letter in chars_guessed:
print('You already guessed the character:',guess_letter)
else:
return guess_letter
def main():
wrong_guess = 0
chars_guessed = []
secret_word = get_secret_word()
output=''
while not(is_game_over(wrong_guess,secret_word,output,chars_guessed)):
display_hangman(wrong_guess)
display_guess(secret_word, chars_guessed)
guess_character = get_guess(secret_word, chars_guessed)
chars_guessed.append(guess_character)
chars_guessed.sort()
if not guess_character in secret_word:
wrong_guess += 1
return wrong_guess
pass
if __name__ == '__main__':
main()