2013-07-28 5 views
0

Я сейчас читаю «Программирование на Python для Абсолютного новичка ed 3», и у меня есть вопрос об одной из проблем.Поиск индекса путем поиска строки в списке

Я создаю игру Word Jumble, которая выберет слово из списка или кортежа, сломает слово и попросит пользователя угадать слово.

# Word Jumble 

# The computer picks a random word and then "jumbles" it 
# The player has to guess the original word 

import random 

# Create a sequence of words to choose from 
WORDS = ("python", "jumble", "easy", "difficulty", "answer", "xylophone") 

# Pick one word randomly from the sequence 
word = random.choice(WORDS) 

# Create a variable to use later to see if the guess is correct 
correct = word 

# Create a jumbled version of the word 
jumble = "" 
while word: 
    position = random.randrange(len(word)) 
    jumble += word[position] 
    word = word[:position] + word[(position + 1):] 

# Start the game 
print( 
""" 
      Welcome to Word Jumble! 

    Unscramble the letters to make a word. 
(Press the enter key at the prompt to quit.) 
""") 
print("The jumble is:", jumble) 

guess = input("\nYour guess: ") 
while guess != correct and guess != "": 
    print("Sorry, that's not it.") 
    guess = input("Your guess: ") 

if guess == correct: 
    print("That's it! You guessed it!\n") 

print("Thanks for playing!") 
input("\n\nPress the enter key to exit.") 

Это оригинальный код из книги. Задача заключалась в том, чтобы внедрить в игру намек и систему подсчета очков. У меня возникла идея создать другой кортеж, соответствующий кортежу СЛОВА, и есть подсказки. IE:

hints = ("*insert hint for python*", 
     "*insert hint for jumble*", 
     "*insert hint for easy*", 
     "*insert hint for difficulty*", 
     "*insert hint for answer*", 
     "*insert hint for xylophone*") 

То, что я хотел сделать, это найти индекс random.choice слова, так это то, что я пытался.

index = word.index(WORDS) 
print(index) 

Я думал, это вернется с целым числом для СЛОВА кортеж и позвольте мне печатать подсказки с помощью:

print(hints[index]) 

Однако я ошибся. Это возможно? Я получил его на работу, однако это был длинный список, если Элиф заявления, такие как: «Почему ты просто не придерживаться этого, так как он работает»

if guess == "hint" or guess == "Hint" or guess == "HINT": 
    if hint == "python": 
     print(HINTS[0]) 

Я знаю, некоторые могут сказать, Я знаю, что могу это сделать, но в то же время я изучаю питон или программирование в целом - это знать, как выполнять заданные задачи различными способами.

--This часть вторичен и не требует ответа, если вы не хотите, целью которых

Кроме того, моя система подсчета очков выглядит следующим образом, в случае, если кто имеет мысли о том, как он может быть улучшен или если все будет хорошо.

Идея вашего счета начинается в 100, если вы используете подсказку, вы теряете 50% от вашего общего балла. Каждая догадка удаляет 10 очков от общего балла. Если ваш счет достигнет отрицательного числа, он будет равен 0. Вот как я это сделал.

score = 100 
guesses = 1 

Это добавление после использования подсказки.

score //= 2 

После того, как сделано предположение.

guesses += 1 

И наконец, если угадана ошибка.

if guess == correct: 
print("That's it! You guessed it!\n") 
score = score - (guesses - 1) * 10 
if score <= 0: 
    score = 0 
print("\nYour score is: ", score) 

Как всегда, любая помощь очень ценится.

+0

Так что твой вопрос? – TerryA

ответ

1

Если у вас есть:

>>> WORDS = ("python", "jumble", "easy", "difficulty", "answer", "xylophone") 

И вы используете метод index, вы получите обратно числовую позицию этого слова в списке:

>>> WORDS.index('easy') 
2 

И точно так же:

>>> word = random.choice(WORDS) 
>>> word 
'answer' 
>>> WORDS[WORDS.index(word)] 
'answer' 

Вы предложили в своем вопросе, что вы видите какое-то поведение, которое не имеет смысла. Если вы думаете, что делаете что-то в значительной степени похожее на то, что я здесь проиллюстрировал, это помогло бы, если бы вы могли обновить свой вопрос с помощью конкретного примера, показывающего (а) то, что вы ожидаете получить, (б) что вы на самом деле получение и (в) любые ошибки, возникшие на этом пути.

+0

Lol, я просто помещал слово и СЛОВА в неправильное место. Спасибо! – mccdlibby

+0

Приносим извинения, что не допустил ошибку, я забыл, что я ее не копировал и не вставлял. Он говорил: TypeError: Невозможно преобразовать объект 'tuple' в str неявно – mccdlibby

0

Чтобы получить индекс слова из WORDS использования:

>>> WORDS.index(word) 
+0

Wow ... Lol. Я не могу поверить, что все было так просто. Я просто помещал слово и СЛОВА в неправильное место. – mccdlibby

+0

@mccdlibby Происходит к лучшему из нас :) Удачи в изучении Python! – Faheem

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