请问这个猜单词程序怎么设计?(主要不知道怎么设计循环)

 

主要循环的伪代码

 

quitf = False #程序是否结束的标识

while quitf == False:

    word = 随机选出一个单词

    while True:

        a = 从单词中随机选出一个字母

        输出该字母及其在单词里的位置

        s = 用户输入

        if s输入的是"!"+单词:

            评判对错并记录有关记录

            break

        elif s输入的是"quit":

            quitf = True

            break

程序结束并输出一组信息            

 

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

import random

# 单词列表
word_lis = ['apple', 'Alice', 'Jerry', 'title', 'model', 'python']


class Word(object):
    """单词模型"""

    def __init__(self, word_):
        self.word = word_
        self.len = len(word_)
        self.tip_index_lis = []
        self.tip_lis = []
        for i in range(self.len):
            self.tip_lis.append('_')
            self.tip_index_lis.append(i)

    def get_next_tip(self):
        len_ = len(self.tip_index_lis)
        if len_ > 1:
            r_index = random.choice(self.tip_index_lis)
            self.tip_index_lis.remove(r_index)
            self.tip_lis[r_index] = self.word[r_index]
            return self.get_tip(), True
        else:
            return self.word, False

    def get_tip(self):
        return ''.join(self.tip_lis)

    def judge_word(self, word_):
        if word_ == self.word:
            return True
        else:
            return False


input_ = '?'
guess_num = 0  # 猜词数
correct_num = 0  # 正确数
error_num = 0  # 错误数
average_lis = []  # 每个词提示次数
while input_ != 'quit':
    word = random.choice(word_lis)
    guess_num += 1
    tip_num = 0  # 提示次数
    word_m = Word(word)
    tip, status = word_m.get_next_tip()
    while True:
        if status:
            print(tip)
            input_ = input('请猜词:')
            if input_.startswith('!'):
                guess = input_.lstrip('!')
                if word_m.judge_word(guess):
                    print('恭喜你!猜对啦!✔')
                    correct_num += 1
                    break
                else:
                    error_num += 1
                    print('猜错啦!x')
            elif input_.startswith('?'):
                tip, status = word_m.get_next_tip()
                tip_num += 1
            elif input_ == 'quit':
                break
            else:
                print('输入有误')
        else:
            print('还猜啥?本次单词为 {}'.format(word_m.word))
            break
    average_lis.append(tip_num)

print('游戏结束!')
print('本次游戏共猜了{}个单词,正确{}次,错误{}次,平均每个单词要求了{}轮提示'.format(guess_num, correct_num, error_num,
                                                       round(sum(average_lis) / len(average_lis)), 2))

 

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y