dabocaiqq 2020-09-01 09:11 采纳率: 54.8%
浏览 58
已采纳

求 the University of Queensland 程序的运行的过程 Python 猜词游戏--多步骤猜词+评分系统

老师下发了一个多步骤猜词游戏
游戏流程:给出了两个列表,分别存储8位单词和6-8位单词,分别代表不同的难度
用户首先需要选择难度,然后随机抽取一个单词作为securityword。
到这一步我都写出来了。但是我在用户进行猜测的代码上非常困惑。
具体需求如下:
用户需要进行8次猜测,第八次猜测输入完整单词。
每猜对一个元音及其位置正确给14分,每猜对一个辅音位置正确给12分,
猜对了字母但是位置错误的给5分。
eg: c r u s h i n g == security word
guess c r (后六位为空) --------------- 12*2 = 24
guess (前四个为空)+ c a l s ---------------- 0 (虽然 c 和 s 都在 crushing中,但是其位置对应的是hing,没有相同的字母,得分为0)
如果输入的字符长度超出security word,则提示长度错误,重新输入。
测试表:
图片说明
实际代码运行界面:
图片说明

代码:

import random

words=['crushing'] #目标词
yy='aeiou'  #元音字母

def Cal(inpt,tar,loc): #计算得分
    point=0 #初始化总分0
    for i in range(loc[1]-loc[0]+1):    #循环猜测位数次
        k=i+loc[0]  #生成目标词的对应位置
        if inpt[i]==tar[k]: #如果猜测的某一位正确
            if inpt[i] in yy:   #如果是元音字母
                point+=14       #加14分
            else:               #如果是辅音字母
                point+=12       #加12分
        elif inpt[i] in tar[loc[0]:loc[1]+1]:   #如果位置错误但是有该字母
            point+=5        #加5分
    return point    #返回总分数


def GuessN(n,tar):  #第n次猜测
    loc=[(0,1),(1,3),(4,7),(3,5),(3,6),(5,7),(2,7),(0,7)]   #每一次的猜测位置list
    string='Guess '+str(n+1)+'|'    #生成Guess x 字符串
    for j in range(8):  #8次循环
        if j>=loc[n][0] and j<=loc[n][1]:   #如果该位置是猜测位
            string+=' * |'  #该位添加*
        else:               #否则
            string+=' - |'  #该位添加-
    print(string)   #打印Guess x| * | * |……
    print('-------------------------------------')
    while 1:    #死循环 用于猜测输入是否正确
        inpt=input('Now enter Guess '+str(n+1)+':') #获得输入
        if len(inpt)==loc[n][1]-loc[n][0]+1:    #如果输入位数正确
            break   #跳出循环
    points=Cal(inpt,tar,loc[n]) #调用计算得分
    print('%d Points' % points) #输出得分
    if points==100: #如果100分
        print('You win')    #则输出You win


def Guess():    #主函数
    tar=words[random.randint(0,len(words)-1)]   #随机挑选目标词(本例只有一个)
    print('Now try and guess the word, step by step!!')
    print('    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |')
    print('-------------------------------------')
    for i in range(8):  #循环8次输入
        GuessN(i,tar)   #进行单次猜测

Guess() #调用主函数



图片说明

  • 写回答

1条回答 默认 最新

  • Z_墨脱 2020-09-04 09:42
    关注

    import random

    words=['crushing'] #目标词
    yy='aeiou' #元音字母

    def Cal(inpt,tar,loc): #计算得分
    point=0 #初始化总分0
    for i in range(loc[1]-loc[0]+1): #循环猜测位数次
    k=i+loc[0] #生成目标词的对应位置
    if inpt[i]==tar[k]: #如果猜测的某一位正确
    if inpt[i] in yy: #如果是元音字母
    point+=14 #加14分
    else: #如果是辅音字母
    point+=12 #加12分
    elif inpt[i] in tar[loc[0]:loc[1]+1]: #如果位置错误但是有该字母
    point+=5 #加5分
    return point #返回总分数

    def GuessN(n,tar): #第n次猜测
    loc=[(0,1),(1,3),(4,7),(3,5),(3,6),(5,7),(2,7),(0,7)] #每一次的猜测位置list
    string='Guess '+str(n+1)+'|' #生成Guess x 字符串
    for j in range(8): #8次循环
    if j>=loc[n][0] and j<=loc[n][1]: #如果该位置是猜测位
    string+=' * |' #该位添加*
    else: #否则
    string+=' - |' #该位添加-
    print(string) #打印Guess x| * | * |……
    print('-------------------------------------')
    while 1: #死循环 用于猜测输入是否正确
    inpt=input('Now enter Guess '+str(n+1)+':') #获得输入
    if len(inpt)==loc[n][1]-loc[n][0]+1: #如果输入位数正确
    break #跳出循环
    points=Cal(inpt,tar,loc[n]) #调用计算得分
    print('%d Points' % points) #输出得分
    if points==100: #如果100分
    print('You win') #则输出You win

    def Guess(): #主函数
    tar=words[random.randint(0,len(words)-1)] #随机挑选目标词(本例只有一个)
    print('Now try and guess the word, step by step!!')
    print(' | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |')
    print('-------------------------------------')
    for i in range(8): #循环8次输入
    GuessN(i,tar) #进行单次猜测

    Guess() #调用主函数

    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境