2013-09-17 4 views
-1

Не могу понять, почему часть not_com_word не печатает угаданные символы вместе. Теперь в каждом цикле функции угадывания not_com_word, который обозначает не завершенное слово, должен отображать угаданные символы вместе и левые скрытые символы.Программа не работает должным образом

# Country Guess game produced by Farzad YZ 
import random 
import string 
print '**Guessing game [Country version]---Powered by Farzad YZ**' 
seq = ['iran','iraq','england','germany','france','usa','uruguay','pakistan'] 
choice = random.choice(seq) 
length = len(choice) 
print 'The hidden word is:',length*'*' 
def guess(): 
    while 1: 
     not_com_word = '' 
     i = raw_input('Guess the character in turn: ') 
     if i == choice[g]: 
      print 'That is right!' 
      not_com_word = not_com_word + i 
      print 'Guessed till here ->',not_com_word,((length-g-1)*'*') 
      break 
     else: 
      print 'Wrong! Try again.' 
      continue 

g = 0 
while g < length: 
    guess() 
    if g == length-1: 
     print '''Congratulations! You guessed the country finally. 
The country was %s.''' %choice 
    g = g+1 
+1

Неправильная часть, где у вас есть это все в один блок кода, вместо того, чтобы он разбивается на ряд функции (например, 'generateHiddenWord',' promptUserForInput' и т. д.) – AJMansfield

+0

Harsh. Это не так уж плохо. – Joe

+0

Я знаю, но в этих обозначениях все еще работает. Единственная часть, которая не работает правильно, - это переменная not_com_word :( –

ответ

1

Каждый раз, когда догадается, что имя var не_com_word получает значение ''. Чтобы исправить это, переместите его вне функции и сделайте его доступным с помощью глобального.

....  
not_com_word = '' 

def guess(): 
    global not_com_word 
.... 
+0

Спасибо, Роберт. Это сработало нормально. –

+0

Я сделал мой друг –

0

Вот другой пример реализации, без необходимости использовать глобальные переменные:

#! /usr/bin/python2.7 

import random 

countries = ['iran','iraq','england','germany','france','usa','uruguay','pakistan'] 

def guess(country): 
    guessed = '' 
    print 'The hidden word is:', len(country) * '*' 
    while country: 
     c = raw_input('Guess the character in turn: ') 
     if c == country[0]: 
      guessed += c 
      country = country[1:] 
      print 'That is right!' 
      print 'Guessed until now:', guessed + len(country) * '*' 
      continue 
     print 'Wrong! Try again.' 
    print 'You guessed', guessed 

guess(random.choice(countries)) 
Смежные вопросы