2015-03-11 5 views
0

Я пытаюсь создать небольшую, основную игру угадывания на питоне, что-то вроде Text Twist. Вот код:Python: Угадающая игра пошла не так

while game_running == True: 
    if (tries_left != 0): 
     print "Tries left: " + str(tries_left) 
     chosen_text = text_list[picker(text_length)] 
     scrambled_text = scrambler(chosen_text) 
     print "Guess the word/s: " + scrambled_text 
     guess_text = raw_input("Your answer (space included): ") 
     if (chosen_text == guess_text): 
      print "Congratulations! You guessed correctly!" 
      game_running = False 
     else: 
      tries_left-=1 
    else: 
     print "LOL. You dun goofed son. Terminating like SkyNet..." 
     game_running = False 

Из функций визирования:

  • подборщика - в основном рандомизер
  • скремблер - шифрует слова. Выполняется и еще не реализована.

У вас есть 3 попытки угадать правильно, или приложение завершается. Если вы правильно угадали, приложение отображает сообщение, а затем завершается. Звучит достаточно просто.

Проблема:

я не мог получить эту работу:

if (chosen_text == guess_text): 

Несмотря на то, что я 100% уверен (через print chosen_text), что я угадал.

Что я пробовал:

Я пытался изменить порядок, поставив str() вокруг них, и даже обратить вспять поток если и другое, используя is вместо == и удаления функция пытается, FWIW.

Ничто не могло уловить его ...
... если только я не жестко запрограммировал chosen_text и не угадал, что правильно.

Я что-то упустил?

+0

Попробуйте проверить длину каждой строки, они одинаковы? Он может содержать новые строки или пробелы. – marsh

ответ

1

Вы, вероятно, хотите, чтобы вставить некоторый отладочный код:

Это покажет вам именно то, что две строки, которые вы имеете дело с. Функция repr будет помещать кавычки вокруг строк и позволяет определить, есть ли непредвиденные пробелы или другие проблемы, связанные с проблемой, с вашими строками.

Если есть, вы можете попробовать что-то вроде:

if chosen_text.strip() == guess_text.strip(): 
    print "Congratulations! You guessed correctly!" 

Или, если есть различающаяся капитализация:

if chosen_text.strip().lower() == guess_text.strip().lower(): 
    print "Congratulations! You guessed correctly!" 

Есть некоторые другие вещи, которые вы могли бы сделать, чтобы сделать ваш код более вещим/больше в идиоме Python. Например:

while game_running == True: 

лучше сформулировать так:

while game_running: 

Но те немногие другие уборок являются стилистическими, и не связан с трудностями сравнения.

+0

'.strip()' работал, спасибо.И спасибо также за подсказку(). Никогда бы не догадался. –

+1

В большинстве ситуаций полезно не тестировать 'A == B' напрямую, а скорее' func (A) == func (B) ', где' func' - это функция, которая выполняет некоторую очистку, «складывание , "или операцию хеширования. В этом случае использование обеих сторон сравнения с помощью методов '.strip()' и/или '.lower()' является эквивалентом 'func'. –

+1

'repr()' btw означает «представление». Это дает вам представление «программиста» данных, тогда как 'str()' дает больше представление «предназначено для обычного пользовательского ввода/вывода» данных. –

Смежные вопросы