【问题标题】:Python - Dictionary help, checking if a char is in a dictionary objectPython - 字典帮助,检查字符是否在字典对象中
【发布时间】:2015-02-04 17:19:59
【问题描述】:

我有一个字典对象;

secret = {"word" : secretWord}

secretWord 是一个包含单个单词的字符串的参数。我还有一个字符串为secretWord 中的每个字符生成一个星号(*)。在我的代码中,我收到了用户的输入,它给出了一封信。

我希望完成的是检查字典对象secretWord,如果是的话,用相关的输入替换任何星号。但是我不确定如何将其保存为新参数,然后在新参数上使用下一个输入。

对不起,如果我的问题/问题不清楚,因为我正在努力如何措辞。

我想要发生的事情:

例如,secretWord 可以是 'PRECEDENCE'

>>>
WORD : **********
Guess a letter: e
**E*E*E**E
Guess a letter: p
P*E*E*E**E
etc

会发生什么:

>>>
WORD : **********
Guess a letter: e
**E*E*E**E
Guess a letter: p
P*********
etc

我当前的代码:

import random
import sys

def diction(secretWord, lives):

    global guess
    global secret

    secret = {"word" : secretWord, "lives" : lives}
    guess = len(secret["word"]) * "*"
    print (secret["word"])
    print ("WORD: ", guess) 

fileName = input("Please insert file name: ")

def wordGuessed(guess, secret):
    if guess == secret["word"]:
        print ("word is guessed")
    if guess != secret["word"]:
        print ("word is not guessed")

def livesLeft(inpu):
    if inpu not in secret["word"]:
        secret["lives"] = secret["lives"] - 1
        print("Lives left: ", secret["lives"])
    if inpu in secret["word"]:
        print("Correct guess")
        print(secret["lives"])


def guessCheck(inpu):
    for char in secret["word"].lstrip():
        if char == inpu:
            print (char, end= "")
        elif char != secret["word"]:
            print ("*", end="")


try:
    f = open(fileName)
    content = f.readlines()
except IOError as e :
    f = None
    print("Failed to open", fileName, "- program aborted")
    sys.exit()

Run = True

while Run == True:
    levelIn = input("Enter difficulty (easy, intermediate or hard): ").lower()
    if levelIn == ("easy"):
        lives = 10

    elif levelIn == ("intermediate"):
        lives = 8

    elif levelIn == ("hard"):
        lives = 5

    else:
        print("Please input a valid difficulty.")
        break



    secretWord = (random.choice(content))
    secretWord = secretWord.replace("\n", "")


    diction(secretWord, lives)
    wordGuessed(guess, secret)

    while secret["lives"] > 0:
        inpu = input("Guess a letter: ").upper()
        livesLeft(inpu)
        guessCheck(inpu)
    if secret["lives"] == 0:
        print ("You have no lives left – you have been hung!")
        print ("The word was,", secret["word"])

【问题讨论】:

  • 所以你正在实现一个刽子手游戏。你能告诉我们你的代码吗?
  • 您当前的流程代码是什么?
  • @JAL 对整个当前程序,已经添加了代码。很抱歉,如果它很乱。
  • @MartijnPieters 完成:D

标签: python if-statement dictionary input char


【解决方案1】:

您需要跟踪到目前为止所做的猜测,并使用这些猜测来显示单词。使用集合来跟踪玩家已经猜到的内容:

guessed = set()

这样你就可以做到:

if inpu in guessed:
    print('You already tried that letter!')
else:
   guessed.add(inpu)

每当用户进行猜测时。

然后您可以使用该集合来显示到目前为止显示的单词:

for char in secret["word"].lstrip():
    if char in guessed:
        print (char, end="")
    else:
        print ("*", end="")

【讨论】:

  • 我应该在哪里放置代码以检查猜测的字母是否已经被估算?
  • @SeanBrackenborough:尽可能接近给定的输入;这还取决于您是否想将重新猜测视为失去生命。
  • 我已经尝试输入代码来检查输入是否已经在集合中,直接在字母的输入下,但是当我运行程序时它确实实现了 if 或 else 语句
  • @SeanBrackenborough:对不起,我不明白你的意思。也许你可以用你修改过的代码发布一个新问题?
猜你喜欢
  • 2014-07-19
  • 1970-01-01
  • 2021-01-22
  • 1970-01-01
  • 2021-10-04
  • 2015-11-12
  • 1970-01-01
  • 1970-01-01
  • 2014-09-16
相关资源
最近更新 更多