一年的五分之四 2023-05-25 11:09 采纳率: 90%
浏览 42
已结题

python猜词游戏

import random
def load_words(file):
    f = open(file, "r", encoding="UTF-8")
    words = []
    for word in f.readlines():
        words.append(word.strip('\n'))
    words.sort()
    return words

def pick_a_word(words):
    n = len(words)
    index = random.randint(0, n-1)
    return words[index]
def level(m):
    print("난이도1~3 1급 단어//3 ; 2급 단어//2 ; 3급 모든 단어")
    n=input("난이도 입력:")
    if n=="1":
        return len(m)//3
    elif n=="2":
        return len(m)//2
    else:
        return len(m)



def puncture_word(word, n):
    target = random.sample(list(word),n)
    result = ""
    for s in word:
        if s in target:
            result = result + "_"
        else:
            result = result + s
    return result, target

def guess(picked_word, quiz_word, target,n,k):
    n*=2
    print("매번 단어를 맞히는 횟수가 빈칸을 채우는 횟수의 2배입니다(尝试的机会是空格的2倍), so 이번 단어 찾는 기획:", n)
    c = input("guess a hidden character : ")
    #ord('a') == 97, ord('z') == 122

    while not(len(c) == 1 and 97 <= ord(c) <= 122):
        c = input("guess a hidden character : ")

    if c in target:
        target.remove(c)
        quiz_word = ""
        for i in range(len(picked_word)):
            if picked_word[i] in target:
                quiz_word += "_"
            else:
                quiz_word += picked_word[i]
    else:
        k += 1
        print("오답입니다. 현재까지 틀린 횟수(截止到现在次错误的次数):", k)
        if k >= n:
            print("틀린 횟수가 너무 많습니다. 프로그램을 종료합니다.")
            exit()
    return quiz_word, target,k


def main():
    sorted_words = load_words("/Users/wangzhehan/Downloads/words_sample.txt")
    picked_word = pick_a_word(sorted_words)
    n=level(picked_word)
    quiz_word, target = puncture_word(picked_word, n)
    k = 0
    while '_' in quiz_word and k < n:
        print(quiz_word)
        quiz_word, target,k= guess(picked_word, quiz_word, target,n,k)
        #if k >= n * 2:
            #print("틀린 횟수가 너무 많습니다. 프로그램을 종료합니다.")
            #print(quiz_word)
            #print("失败!")
            #exit()
    print(quiz_word)
    print("축하합니다!")

@Dick_不周 哥 正常输入但输入错误的时候记一次错误的次数,但非正常输入不计入错误输入次数,在超过规定次数后直接打印 失败 但我试了很多次 在各个地方补充这个要求 但要么不满足要求 要么代码运行出错 能帮我看看吗?😭 拜-托啦🙏!

  • 写回答

4条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-05-25 16:26
    关注
    • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7460173
    • 这篇博客你也可以参考下:Python 第4次作业:程序设计题 验证码较验 大小写转换 查找指定字符 凯撒加密 敏感词过滤 字符串替换 身份证号处理
    • 同时,你还可以查看手册:python- 定义扩展类型:已分类主题- 终结和内存释放 中的内容
    • 除此之外, 这篇博客: Python的简单分支与循环结构案例中的 8.输入两个整数,如果两个数相减的结果为奇数则输出该结果,否则输出提示信息结果不是奇数。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • x = int(input('请输入一个数字x:'))
      y = int(input('请输入一个数字y:'))
      z = x -y
      if z % 2 != 0:
          print(z)
      else:
          print('结果不是奇数')
      

      运行结果:

      请输入一个数字x: 4
      请输入一个数字y: 1
      3

    • 您还可以看一下 jeevan老师的Python量化交易,大操手量化投资系列课程之内功修炼篇课程中的 讲师简介,量化交易介绍及自动化交易演示小节, 巩固相关知识点
    • 以下回答由chatgpt基于相关博客总结生成:

      我可以帮你优化猜词游戏的Python代码,以下是具体步骤:

      1. 在现有的代码基础上,增加一个变量来记录错误次数,初始值为0,例如 err_count = 0。

      2. 在用户输入的语句中加入判断错误次数的逻辑,如果错误次数达到了规定次数,则直接打印“失败”并退出游戏。例如:

      while err_count < max_err:
          # 获取用户输入
          guess = input("请猜一个单词:")
          # 判断用户猜测是否正确
          if guess == target_word:
              print("恭喜你,猜对了!")
              break
          else:
              err_count += 1
              print("抱歉,猜错了!你还有", max_err - err_count, "次机会。")
      if err_count == max_err:
          print("失败!正确答案是", target_word)
      
      1. 如果用户猜错了,不增加正确次数,只增加错误次数即可。例如:
      if guess == target_word:
          correct_count += 1
      else:
          err_count += 1
      

      完整优化后的代码如下:

      import random
      
      words = ["python", "java", "ruby", "javascript"]
      target_word = random.choice(words)
      max_err = 5
      correct_count = 0
      err_count = 0
      
      print("欢迎来到猜词游戏!")
      print("游戏规则:你需要在", max_err, "次机会内猜出所选单词。")
      
      while err_count < max_err:
          # 获取用户输入
          guess = input("请猜一个单词:")
          # 判断用户猜测是否正确
          if guess == target_word:
              correct_count += 1
              print("恭喜你,猜对了!")
              break
          else:
              err_count += 1
              print("抱歉,猜错了!你还有", max_err - err_count, "次机会。")
      if err_count == max_err:
          print("失败!正确答案是", target_word)
      

      希望能够帮助到你!如果还有其他问题,欢迎随时跟我交流。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 6月5日
  • 已采纳回答 5月28日
  • 创建了问题 5月25日

悬赏问题

  • ¥15 django5安装失败
  • ¥60 ios系统storm sniffer 写入http规则加密如何破解?
  • ¥15 Java与Hbase相关问题
  • ¥15 后缀 crn 游戏文件提取资源
  • ¥15 ANSYS分析简单钎焊问题
  • ¥20 bash代码推送不上去 git fetch origin master #失败了
  • ¥15 LOL外服加入了反作弊系统,现在游戏录像rofl文件离线都无法打开
  • ¥15 在centos7安装conda
  • ¥15 c#调用yolo3 dll文件获取的数据对不上
  • ¥20 WPF 如何实现多语言,label 和cs(live Charts)中是否都能翻译