Hangman游戏-如果输入的字母序列混乱,则无法将输入的字母与单词匹配

问题描述 投票:0回答:1

以下是我要构建的内容的概述:

  1. 从用户处获取有关字长的输入信息
  2. 根据用户输入的单词长度从文本文件中获取单词
  3. 从用户输入中获取尝试次数
  4. 将单词显示为*
  5. 从获取提示字母输入用户
  6. 运行游戏

    • 首先显示*中的单词
    • 显示剩余尝试次数
    • 提示输入下一个字母
      • 如果输入与单词匹配
        • 打印“您猜到正确的字母”
        • 用适当的空格替换字母中的单词并打印
        • 剩余打印尝试次数
        • 打印猜字母
        • 提示输入下一个字母*一直进行到猜到所有正确的字母为止
        • 打印“您赢了”
      • 如果输入与单词不匹配
        • 打印“您猜错了字母”
        • 将单词打印为*
        • 剩余打印尝试次数
        • 打印猜字母
        • 提示输入下一个字母*一直进行到剩余attepmt为0
        • 打印“您输了”
      • 如果尝试次数为0
        • 打印“不再尝试”
        • 打印正确的单词

仅当输入的字母恒定时,代码才有效。

假设游戏单词是“ Rain”,仅当用户输入:“ R”,“ A”,“ I”,“ N”时,该代码才有效。

如果输入的字母混杂在一起,例如“ A”,“ R”,“ I”,“ N”,则代码将不起作用。

我相信可以通过使用枚举进行迭代来实现,但我不确定如何实现。

这是我的代码:

import random

WORDS = "wordlist.txt"

"""Getting Length input from user and selecting random word from textfile"""
def get_word_length_attempt():
    max_word_length = int(input("Provide max length of word [4-16]: "))
    current_word = 0
    word_processed = 0
    with open(WORDS, 'r') as f:
        for word in f:
            if '(' in word or ')' in word:
                continue
            word = word.strip().lower()
            if len(word) > max_word_length:
                continue
            if len(word) < 4:
                continue
            word_processed += 1
            if random.randint(1, word_processed) == 1:
                current_word = word
        return current_word


"""Getting input of number of attempts player wants to have"""
def get_num_attepmts():
    num_attempt = int(input("Provide number of attempts you want: "))
    return num_attempt

"""Displaying word in *"""
def display_word_as_secret():
    display_word = '*' * len(get_word_length_attempt())
    print(display_word)

"""Getting hint letter from user input"""
def get_user_letter():
    user_letter = input("Enter letter: ").lower()
    if len(user_letter) != 1:
        print("Please Enter single letter")
    else:
        return user_letter

"""Starting Game"""
def start_game():
    game_word = get_word_length_attempt()
    attempts_remaining = get_num_attepmts()
    print('Your Game Word: ' + game_word)
    print('Your Game Word: ' + '*'*len(game_word))
    print('Attempts Remaining: ' + str(attempts_remaining))
    guessed_word = []

    while attempts_remaining > 0:
        next_letter = get_user_letter()
        if next_letter in game_word:
            print('You guessed correct')
            guessed_word.append(next_letter)
            print('Your Game Word: ' + game_word)
            print('Your Game Word: ' + '*' * len(game_word))
            print('Attempts Remaining: ' + str(attempts_remaining))
            correct_word = "".join(guessed_word)
            print(guessed_word)
            if correct_word == game_word:
                print('you won')
                break
        else:
            print('The letter in not in the game word')
            attempts_remaining -= 1
            print('Your Game Word: ' + game_word)
            print('Your Game Word: ' + '*' * len(game_word))
            print('Attempts Remaining: ' + str(attempts_remaining))

    else:
        print('no attempts left')
        print('You Lost')
        print('The Word is: ' + game_word)


start_game()

[以下是我要构建的内容的概述:从用户那里获取有关单词长度的输入,根据用户输入的单词长度从文本文件中获取单词,从用户那里获取尝试的次数...

python python-3.x
1个回答
0
投票
您正在按照用户输入的顺序从猜出的字母中构造correct_word。猜测的字符串'ARIN'不等于'RAIN'
© www.soinside.com 2019 - 2024. All rights reserved.