2013-07-01 7 views
1

Итак, я новичок в python и пошел через учебник, чтобы написать игру подземелья в python 2.7 на моем новом пи. Ну, в любом случае мне понравился код и все, и все получилось отлично, но потом я хотел добавить что-то, чтобы он спросил: «Если бы вы хотели продолжить играть», и я много исследовал и поговорил о некоторых чатах об этом и придумал/нашел этот сценарий выхода:Hangman game problem with keep_playing

while keep_playing == False: 
user = raw_input("\n\tShall we play another game? [y|n] ") 
again = "yes".startswith(user.strip().lower()) 
if again: 
    keep_playing = True 
if not again: 
    break 

raw_input ("\n\n\nPress enter to exit") 

, но я получаю эту ошибку:

Traceback (most recent call last): 
File "/home/pi/Desktop/Scripts/scrappy/ls/ls/hangman3.py", line 40, in <module> 
    while keep_playing == False: 
NameError: name 'keep_playing' is not defined 

, когда его RAN с этим сценарием

import random 
import urllib 

print 'time to play hangman' 
    animals = urllib.urlopen('http://davidbau.com/data/animals').read().split() 
secret = random.choice(animals) 
guesses = 'aeiou' 
turns = 5 

while turns > 0: 
missed = 0 
for letter in secret: 
    if letter in guesses: 
    print letter, 
    else: 
    print '_', 
    missed += 1 

print 

if missed == 0: 
    print 'You win!' 
    break 

guess = raw_input('guess a letter: ') 
guesses += guess 

if guess not in secret: 
    turns -= 1 
    print 'Nope.' 
    print turns, 'more turns' 
    if turns < 5: print ' O ' 
    if turns < 4: print ' \_|_/ ' 
    if turns < 3: print ' | ' 
    if turns < 2: print '/\ ' 
    if turns < 1: print ' d b ' 
    if turns == 0: 
     print 'The answer is', secret 

while keep_playing == False: 
user = raw_input("\n\tShall we play another game? [y|n] ") 
again = "yes".startswith(user.strip().lower()) 
if again: 
    keep_playing = True 
if not again: 
    break 

raw_input ("\n\n\nPress enter to exit") 

Может кто-нибудь мне помочь? **** редактировать ***** кто-то может закрыть этот рисунок протектора, используя подсказки, предусмотренные я решить мою проблему это окончательный код

import random 
import urllib 

animals = urllib.urlopen('http://davidbau.com/data/animals').read().split() 

while True: 

print 'time to play hangman' 
secret = random.choice(animals) 
guesses = 'aeiou' 
turns = 5 

while turns > 0: 
    missed = 0 
    for letter in secret: 
     if letter in guesses: 
      print letter, 
     else: 
      print '_', 
      missed += 1 

    print 

    if missed == 0: 
     print 'You win!' 
     break 

    guess = raw_input('guess a letter: ') 
    guesses += guess 

    if guess not in secret: 
     turns -= 1 
     print 'Nope.' 
     print turns, 'more turns' 
     if turns < 5: print ' O ' 
     if turns < 4: print ' \_|_/ ' 
     if turns < 3: print ' | ' 
     if turns < 2: print '/\ ' 
     if turns < 1: print ' d b ' 
     if turns == 0: 
      print 'The answer is', secret 
      break 


user = raw_input("\n\tShall we play another game? [y|n] ") 
again = "yes".startswith(user.strip().lower()) 
if not again: 
    raw_input ("\n\n\nPress enter to exit") 
    break 

ответ

1

Я не в Python, но я могу видеть вас 'действительно пытается сравнить пустую/неопределенную переменную keep_playing с false. Насколько я знаю, вы не можете сравнивать переменную с чем-то, если вы еще не объявили переменную перед сравнением, но не уверены, что в Python это другое.

Что произойдет, если вы напишете эту линию вдоль других переменных:

keep_playing = False 

так вы получите:

animals = urllib.urlopen('http://davidbau.com/data/animals').read().split() 
secret = random.choice(animals) 
guesses = 'aeiou' 
turns = 5 
keep_playing = False 
+0

что исправили трекбек ошибка, но теперь он просто переходит к «нажмите enter для выхода», а затем просто выйдите/остановите –

+0

, используя ваши советы, и я решил ee отредактировал сообщение –

1
animals = urllib.urlopen('http://davidbau.com/data/animals').read().split() 
secret = random.choice(animals) 
guesses = 'aeiou' 
turns = 5 
keep_playing = False 

if guess not in secret: 
    turns -= 1 
    print 'Nope.' 
    print turns, 'more turns' 
    if turns < 5: print ' O ' 
    if turns < 4: print ' \_|_/ ' 
    if turns < 3: print ' | ' 
    if turns < 2: print '/\ ' 
    if turns < 1: print ' d b ' 
    if turns == 0: 
     print 'The answer is', secret 
     keep_playing = False 

Это должно сделать это

+0

спасибо, используя подсказки, которые вы предоставили, я решил это посмотреть отредактированный пост –