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

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: 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)
    

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

这啥代码,k都没定义呀
而且定义了一堆函数,没有调用,能运行才怪
你写一个函数就调一个函数,不要洋洋洒洒写了好几百行代码一起执行
那出问题鬼知道是哪出的问题

我理解一下你的需求,你希望在用户输入无效字符时不增加错误计数,超过一定次数后打印
修改你的guess方法,关键在continue和exit(),做了关键的判断,试试看看:

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

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

    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


如果有帮助,请点击一下采纳该答案~谢谢

最后一行后面忘了复制打main()了 是运行了的