2015-09-03 3 views
0

Я новичок в python и работаю через книгу. В конце главы возникла задача создать игру, в которой компьютер выбирает случайное слово, и игрок должен угадать это слово. Компьютер сообщает игроку, сколько букв в слове. У игрока есть пять шансов узнать, написано ли это слово. Компьютер отвечает только да/нет. Затем игрок должен угадать слово. Вот моя попытка это:Не удается отладить базовую программу python

print ("\t\t\tWelcome to the guess my word challenge") 
print ("\nThe computer will pick and random word and you have to guess it in five tries") 

import random 

#create sequence of words 
WORDS = ("computer","laptop","mouse","keyboard") 

#pick random word 
word=random.choice(WORDS) 

correct=word 
tries=0 

print ("This word has ",len(word), "letters") 

i="" 
while word != "" and tries<5: 
    for i in word: 
     i=input("Guess a letter: ") 
     if i not in word: 
      print ("No") 
     else: 
      print ("\nYes") 
    tries+=1 
if tries==5: 
     print("You've run out of tries") 

final=input("\nGuess my word: ") 
if word==correct: 
    print ("Well done that was my word!") 
else: 
    print ("Better luck next time") 

input ("\n\nPress the enter key to exit") 

Теперь проблема у меня, я не могу получить немного пытается работать, в конце концов программа будет сказать, что вы уже исчерпали попытки, но я хочу его скажем, что после 5 попыток. Кроме того, независимо от того, какое слово я вкладываю в «угадать мое слово», оно всегда отображает его правильное, даже если это не так.

+0

Вы никогда не используйте 'final' после вы спросите его - вы намеревались сравнить «final == correct»? –

ответ

1

Есть две проблемы с кодом.

  1. Вы попросите пользователя для письма для каждой буквы в слове, и только потом увеличивать счетчик попыток, то переспросить для каждой буквы в слове. Удалите петлю for i in word:.

  2. Вы сравниваете word с correct, который является только самым словом. Вместо этого, вы должны сравнить его с final предположение пользователя, то есть if word==final:

С этими двумя исправлениями, он должен работать.

0

Вы хотите посчитать количество попыток игрока. Цикл

for i in word: 

будет цикл один раз для каждой буквы в слове, установив i равные к этому письму, но затем переназначить i для ввода данных пользователя. Поэтому, если вы удалите цикл for, он должен работать так, как предполагалось.

i="" 
while word != "" and tries<5: 
    i=input("Guess a letter: ") 
    if i not in word: 
     print ("No") 
    else: 
     print ("\nYes") 
    tries+=1 
if tries==5: 
    print("You've run out of tries") 

[EDIT] Также вы не сравниваете правильное слово для пользовательского ввода, так что вы хотите сказать

if correct == final : 
0
import random 

word = random.choice(['computer','laptop','mouse','keyboard']) 

def guess(tries = 0): 
    letter = input('Guess a letter: ') 
    if letter in word: 
     print('\nYes') 
    else: 
     print('No') 
    tries += 1 
    if tries == 5: 
     return 
    guess(tries) 

print('\t\t\tWelcome to the guess my word challenge') 
print('\nThe computer will pick and random word and you have to guess it in five tries') 
print('This word has {0} letters'.format(len(word))) 

guess() 

final = input('\nGuess my word: ') 

if final == word: 
    print('Well done that was my word!') 
else: 
    print('Better luck next time') 

input('\n\nPress the enter key to exit') 
+0

Вместо того, чтобы просто предоставить правильный код, было бы более полезно объяснить, почему код правильный/его код был неправильным. Таким образом, люди могут учиться, а не просто копировать пасту – Lightfire228

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