首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我正在尝试查看所有字母在Hangman中何时都已被发现,但它就是不起作用

我正在尝试查看所有字母在Hangman中何时都已被发现,但它就是不起作用
EN

Stack Overflow用户
提问于 2020-02-24 09:45:35
回答 1查看 21关注 0票数 0

我一直在用work测试来测试它,并将每个字母转换为大写,以便注册。我遇到麻烦的部分是:

代码语言:javascript
复制
if Counter(guesses) == Counter(testw):

   winner = 1

   break

我所要做的就是跳出while循环,也许还会打印一条消息。我试着用计数器做一些我在网上看到的事情,但它不起作用,这就是为什么那个计数器的东西在那里(即使我不是真的理解它)。

代码语言:javascript
复制
import random
import os
import time
from collections import Counter 

#someWords = '''apple banana mango strawberry  
#orange grape pineapple apricot lemon coconut watermelon 
#cherry papaya berry peach lychee muskmelon'''

#someWords = someWords.split(' ') 
#word = random.choice(someWords)  

testw = "TEST"
point = 0

print("Welcome to Hangman!")

winner = 0
guesses = ''
wrong = ''
total = 0
while point < 6:


    if point == 0:
        print("-----I\n     I\n     I\n     I\n========")
    if point == 1:
        print("-----I\n  O  I\n     I\n     I\n========")
    if point == 2:
        print("-----I\n  O  I\n  |  I\n     I\n========")
    if point == 3:
        print("-----I\n  O  I\n /|  I\n     I\n========")
    if point == 4:
        print("-----I\n  O  I\n /|\ I\n     I\n========")
    if point == 5:
        print("-----I\n  O  I\n /|\ I\n   \ I\n========")
    if point == 6:
        print("-----I\n  O  I\n /|\ I\n  /\ I\n========")

    for char in testw:
        if char in guesses:
            print(char, end = ' ')
        else:
            print('_ ', end = '')



    print("\n")
    print('You have ', 6-point, ' guesses left!')
    guess = input("Guess a letter: ")


    guess = str.upper(guess)
    guesses += guess

    if guess not in testw:
        print("Wrong!")
        point += 1
        guess += wrong
    if guess in testw:
        print("Correct!")
        guesses += guess
    total += 1

    if Counter(guesses) == Counter(testw):
        winner = 1
        break
#end
if winner == 1:
    print("Winner")
else:
    print("You Lose")
EN

回答 1

Stack Overflow用户

发布于 2020-02-24 09:59:55

这里有两个问题导致您的wincheck总是失败。

将来,当您遇到需要根据某个条件退出循环的错误时,使用print()很方便,因为检查很可能会失败。

在检查字母是否正确之前,您已经将猜测出的字母添加到用于检查胜利的变量中。

代码语言:javascript
复制
guess = str.upper(guess)

guesses += guess

解决此问题时,如果找到多个字母,则不会存储这些字母。您只需向guesses添加一个实例

代码语言:javascript
复制
if guess in testw:
        print("Correct!")
        for letter in testw:
            if letter.upper() == guess.upper():
                guesses += guess

上述代码将解决此问题,方法是遍历正确单词中的每个字母,并在每次找到该字母时将其添加到guesses字符串中。

总而言之,下面的代码解决了这两个问题。

代码语言:javascript
复制
import random
import os
import time
from collections import Counter 

#someWords = '''apple banana mango strawberry  
#orange grape pineapple apricot lemon coconut watermelon 
#cherry papaya berry peach lychee muskmelon'''

#someWords = someWords.split(' ') 
#word = random.choice(someWords)  

testw = "TEST"
point = 0

print("Welcome to Hangman!")

winner = 0
guesses = ''
wrong = ''
total = 0
while point < 6:


    if point == 0:
        print("-----I\n     I\n     I\n     I\n========")
    if point == 1:
        print("-----I\n  O  I\n     I\n     I\n========")
    if point == 2:
        print("-----I\n  O  I\n  |  I\n     I\n========")
    if point == 3:
        print("-----I\n  O  I\n /|  I\n     I\n========")
    if point == 4:
        print("-----I\n  O  I\n /|\ I\n     I\n========")
    if point == 5:
        print("-----I\n  O  I\n /|\ I\n   \ I\n========")
    if point == 6:
        print("-----I\n  O  I\n /|\ I\n  /\ I\n========")

    for char in testw:
        if char in guesses:
            print(char, end = ' ')
        else:
            print('_ ', end = '')



    print("\n")
    print('You have ', 6-point, ' guesses left!')
    guess = input("Guess a letter: ")


    guess = str.upper(guess)

    if guess not in testw:
        print("Wrong!")
        point += 1
        guess += wrong
    if guess in testw:
        print("Correct!")
        for letter in testw:
            if letter.upper() == guess.upper():
                guesses += guess
    total += 1

    if Counter(guesses) == Counter(testw):
        winner = 1
        break

#end
if winner == 1:
    print("Winner")
else:
    print("You Lose")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60368594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档