首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Hangman图形

Python Hangman图形
EN

Stack Overflow用户
提问于 2017-06-29 12:35:25
回答 1查看 216关注 0票数 0

我试着在我的代码中为一个绞刑者游戏添加图形。图形没有出现,当你猜一个字母时,它会自动告诉你游戏结束了。我不确定哪里出了问题,因为我对python和编码非常陌生。

代码语言:javascript
复制
import random

Graphics=['''
------------
|         |''','''


------------
|         |         
|          O''','''


------------
|         | 
|          O 
|         / |''','''

------------
|         | 
|          O 
|         / | 
|          | ''','''


------------
|         |
|          O 
|         / |
|          |
|         / | 
|
|            ''']


start = str(input("Welcome to Hangman!"))
failures = 0
allowed = 6
guesses_left = 6
guessed = str()
wordlist = ['kittens' , 'keen', 'right', 'square', 'baseball','soccer', 'square','house', 'safe', 'pizza', 'pasta', 'Loyola', 'cat', 'dog', 'rambler', 'Chicago', 'Pittsburgh']

def correct(guess):
    if guess in word:
        if guess not in guessed:
            print("Correct")
            return(True)
    else:
        if guess not in word and len(guess) == 1 and guess in 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ':
            if guess not in guessed:
                print("Incorrect!")
                return(False)

print("Guess this word!")
print("You can input any letter from A to Z and the space key.")
wordnumber = random.randint(0, len(wordlist))
word = (wordlist[wordnumber])
guessed_letters = len(word) * ['_']
print(' '.join(guessed_letters))
while failures < allowed:
    guess = str(input("Guess a letter!"))
    if len(guess) != 1 or guess not in 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ':
        print("That is not a letter, try again.")
    if guess in guessed:
        print("You have already guessed that letter, try again.")
    iscorrect = correct(guess)
    guessed = guessed, guess
    if iscorrect == True:
        for position, letter in enumerate(word):
            if letter == guess:
                guessed_letters[position] = letter
        print(' '.join(guessed_letters))
    if iscorrect == False:
        print("Wrong!")
        failures = failures+1
        guesses_left -= 1           # Number of guesses left
        print("You have", guesses_left , "guesses left.")

    if (guessed_letters == word):
        print('''
                You have successfully guessed the word!
            ''')
    else:
        print('''
                You have lost the game! 
            ''')
    break
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-29 12:46:35

游戏存在的原因是由于在第一个循环结束时调用的breakelse还应该基于没有猜测的条件:

代码语言:javascript
复制
if (guessed_letters == word):
    print('''
            You have successfully guessed the word!
        ''')
    break
elif not guesses_left:
    print('''
            You have lost the game! 
        ''')
    break

关于“图形”。每次你得到一个错误的答案时,都会打印出来。我推荐使用if/else,而不是这里的两个if:

代码语言:javascript
复制
if iscorrect == True:
    for position, letter in enumerate(word):
        if letter == guess:
            guessed_letters[position] = letter
    print(' '.join(guessed_letters))
else:
    print("Wrong!")
    failures = failures+1
    guesses_left -= 1           # Number of guesses left
    print(Graphics[6-guesses_left])
    print("You have", guesses_left , "guesses left.")

Graphics[6-guesses_left]表示在Graphics中查找索引,该索引等于最初的猜测次数(6)减去剩余的猜测次数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44816420

复制
相关文章

相似问题

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