通过在列表中搜索字符串来查找索引

时间:2013-07-28 01:31:51

标签: python algorithm python-3.x

我目前正在阅读“Absolute Beginner ed 3的Python编程”,我对其中一个挑战有疑问。

我正在创建一个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.")

这是本书的原始代码。挑战是在游戏中实施提示和评分系统。我想到了创建另一个与WORDS元组相对应的元组并在那里有提示。 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)

我以为这会回到WORDS元组的整数,并允许我使用以下方式打印提示:

print(hints[index])

然而,我错了。这可能吗?我得到了它的工作,但它是一个很长的if if,elif语句列表,如:

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

我知道有些人可能会说,“为什么不坚持这个,因为它有效?”我知道我可以做到这一点,但我学习python或编程的重点是知道如何以各种方式完成设置任务。

- 除非你想 -

,否则这部分是次要的,不需要回复

此外,我的评分系统如下,以防任何人有关于如何改进或如果做得好的想法。

这个想法是你的分数从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)

与往常一样,非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

如果你有:

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

使用index方法,您可以在列表中找回该单词的数字位置:

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

同样地:

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

你在问题​​中建议你看到一些没有意义的行为。如果你认为你做的事情与我在这里所说的很相似,那么如果你能用一个具体的例子更新你的问题会有所帮助,这个例子表明(a)你期望得到什么,(b)你实际上是什么得到,以及(c)沿途遇到的任何错误。

答案 1 :(得分:0)

要从WORDS获取单词的索引,请使用:

>>> WORDS.index(word)