如果输入的内容正确,如何显示字母

时间:2017-11-30 16:22:27

标签: python

我正在创建一个刽子手游戏,用户将在其中输入另一个用户必须猜测的单词。 我已经用破折号打印了这个词,但是当我输入一个字母中的字母时,我无法删除破折号。

#output a game of hangman

letters= ["A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z"]
for i in range(1):
print("Welcome to Hangman")
word_guess = str(input("Please enter a word for user 2 to guess:"))
print("Word to be guessed:"+str(word_guess))
length_of_word=len(word_guess)
display=("-"*length_of_word)
print("Display:"+str(display))

for i in range(1):
 print("Welcome to Hangman Player 2")
letter_guess=str(input("Please guess a letter:"))
if letter_guess in word_guess:
print("Yay you have a match")
display=display.rstrip(display)
print(display)

2 个答案:

答案 0 :(得分:0)

刽子手

试试这段代码,没有修补,但它确实有效。也许它可以给你一些想法。要工作,你必须连接,否则把文件放在计算机上。

enter image description here

from urllib.request import urlopen
from random import choice


w0 = urlopen("https://raw.githubusercontent.com/Xethron/Hangman/master/words.txt")
w = [str(x).replace("b'", "").replace("\\n", "") for x in w0]
word = choice(w)
word = word.replace("'", "")
strips = list("_" * len(word)) 
chosen = []


def guess():
    y = input("Guess a letter: ")
    if y in chosen:
        print("You have choose this letter yet, retry...")
        guess()
    chosen.append(y)
    if y in word:
        if "_" not in strips:
            print("GREAT, YOU WIN!")
            print()
            print()
            pass
        print("Great the letter is in the word")
        indexes = [x for x, y2 in enumerate(word) if y == y2]
        for ind in indexes:
            strips[ind] = y
        for ch in strips:
            print("[" + ch + "]", end='')
        print("You`ve choosen: ", "".join(chosen))
        print()
        print()
        guess()
    else:
        print("This letter is not in the word, try again")
        print("".join(strips))
        print("You`ve choosen: ", "".join(chosen))


def start():
    for ch in range(len(word)):
        guess()
    print("Game over " * 5)
    print("The word was " + word)
    print("\n" * 5)


print("HANGMAN - Giovanni Gianni Gatto")
print("print start() to restart")
print()
start()

答案 1 :(得分:0)

我有一个刽子手躺在我身边,我适应了你的需要。您需要的是列出包含找到的项[]的列表,当您打印要显示的单词时,您只显示找到的项目中的字母_

print(' '.join(i if i in found else '_' for i in secretword))

这是一个游戏的完整示例,其中它要求one_guess(一个函数),直到找到的项目的长度也等于该密码集的集合的长度(set删除重复的字母)。试试吧:

def print_word():
    print(' '.join(i if i in found else '_' for i in secretword))

def valid_input():
    while True:
        guess = input("Guess a letter: ({})".format(''.join(i for i in alpha)))
        if guess in alpha:
            alpha.remove(guess)
            return guess
        else:
            print("Not valid input!")

def one_guess():
    print_word()
    guess = valid_input()

    if guess in letters:
        print("You found one!\n")
        letters.remove(guess)
        found.append(guess)
    else:
        print("You didn't find one!\n")

secretword = "animal"
alpha = list("abcdefghijklmnopqrstuvwxyz")
letters = list(set(secretword))
found = []

while True:
    one_guess()
    if len(set(secretword)) == len(found):
        print("You won!")