类似Hangman的Python程序

时间:2018-04-29 04:32:54

标签: python string loops

注意:我无法使用列表来解决此问题。这对字符串操作来说是一个挑战。

它应该让用户输入一个单词并显示星号,填写像刽子手一样猜出的字母

String heading = hit.getString("heading");
String content = hit.getString("content");
String pdf = hit.getString("img");
pdf.replaceAll(" ","%20");
String link = "fitandfineindustries.com/images/notices/"+pdf;
mExampleList.add(new ExampleItem(heading, date, content, click, link));

这会产生以下结果:

notice how the entire input is spelled out and the asterisks don't disappear

这对我来说非常令人不安。我最后一个克服这个问题的策略。

2 个答案:

答案 0 :(得分:0)

这里有一堆奇怪的东西可能有助于修复。

  1. 您每次循环时都会将guessed重置为''。可能想在外面。

  2. 您设置了guessed += guess,然后立即使用while guess in guessed进行操作...这样您就可以至少获得Already guessed次提示

  3. 我不确定letters_left的重点

  4. 而不是new_display += '*'子句中的else,您可能希望从letters_guessed中提取显示字符,以便显示所有已猜到的字母(和那些没有的人*

答案 1 :(得分:0)

对于您似乎要问的特定问题:

guessed = ''
guess = input('Enter a letter: ')

guessed += guess

while guess in guessed:

想想这是做什么的。它将guessed设置为''。然后,如果我输入a,则会将guessed设置为'' + 'a',即'a'。然后,while guess in guessed:会继续问我新的猜测,直到其中一个人不在'a'

这显然没有做任何有用的事情。我认为你想要做的是这样的事情:

guessed = '' # before the loop

while '*' in letters_guessed:
    new_left = ''
    new_display = ''
    guess = input('Enter a letter: ')

    while guess in guessed:
        print('Already guessed. Try again.')
        guess = input('Enter guess: ')

    guessed += guess # after we've accepted the guess

现在,guessed是我到目前为止所尝试的所有猜测,不包括我现在尝试的那个,而不仅仅是我现在正在尝试的猜测,所以while循环更有意义。

当然,你的程序还有其他多个错误,所以如果没有修复它们仍然无法正常工作,但这应该会让你超越那个错误。

同时,您应该考虑执行以下操作之一:

  • 添加一些临时print电话,以便在您不确定发生了什么的情况下转储相关变量。
  • 在调试器中运行代码,这样您就可以进入并探索您感到困惑的地方发生的事情。
  • Python Tutor等可视化工具中运行代码,这样您就可以逐步查看所有变量的内容。