猫史档案馆


伪AI对话1.6(纯净版)

用户:活波的飓风雀HSWK活波的飓风雀HSWK查看:7 回复:1 评论:7 创建时间:2023-08-14T23:31:06


把上次那个文件改了一下,做了一下代码重构(就是把一个文件分成了两个文件而已)

使用方法:原版需要输入ID和密码,但是这一版不用,点击运行就会直接开启对话。

至少需要海龟编辑器2.0才能运行,因为这样才可以同时开启两个Python文件。

如果你使用的是旧版本,密码如下:

号码:1

密码:12802234

一共有七组这样的密码,这是其中一组   

另外下面这个程序可以一键生成号码和密码对应的hash值:

# 适用于网页版的简易哈希加密
def hash_pass(input1, input2):
    # 输入两个参数,分别是原码和密钥
    a = 0x12c34fec960b
    b = input1 & a
    b = (b << 16) ^ input2
    b = (b << 16) ^ input2
    b += (a & input2)

    return b


experience_code = int(input('请输入您的号码:'))  
pass_word = int(input('请输入您的密码:'))
results = hash_pass(experience_code, pass_word)
print("对应的哈希值为:",results)

 把得出的结果插入到密钥列表中就可以

第一个文件代码如下:

from AI判断 import ai
#from AI判断 import calculate_similarity
goon = 1  # 储存是否继续对话的状态
answer = 0

#答案添加函数
def add_word(input_quastion):
    if(answer):
        print('感谢!')
        print('问题:'+input_quastion)
        of = open(file=r"AI文档.txt", mode='a', buffering=-1)
        of.write('"'+ input_quastion + '"' + ':')
        of.write('"' + input('答案:') + '"' +'\n' )
        of.close
        return 0
    else:
        return 0





while(goon):
    input_main = input('你:')
    print('AI:', ai(input_main))
    if(ai(input_main) == '抱歉,我不知道'):
        print('您愿意为我们补充正确答案吗?')
        answer = bool(input())
        add_word(input_main)

 由于第二个文件内置很多键值对,所以代码比较长:

def ai(input_str):
    # 内置的键值对集合
    key_value_pairs = {
        "你好": "你好!有什么我可以帮助你的吗?",

        "介绍一下编程猫": "编程猫是一款面向儿童和初学者的编程学喵台。它提供了一个可视化的编程环境,使学习编程变得简单有趣。以下是编程猫的一些特点:\n\
可视化编程环境:编程猫提供了一个图形化的编程界面,让学习者可以通过拖拽和连接图块的方式编写代码,而不需要记忆复杂的语法。\n\
丰富的编程任务:编程猫提供了各种有趣的编程任务和项目,如动画制作、游戏开发、机器人控制等,让学习者可以通过实践来巩固所学的编程概念。\n\
互动学习社区:编程猫有一个活跃的学习社区,学习者可以在这里与其他人分享自己的作品、交流经验,还可以参加编程比赛和挑战。\n\
多平台支持:编程猫可以在多种设备上使用,包括电脑、平板和手机,学习者可以根据自己的喜好选择合适的设备进行学习。\n\
编程猫致力于让编程教育变得简单、有趣和易于理解,帮助儿童和初学者培养编程思维和解决问题的\
能力。无论是想要学习编程的孩子还是成人,都可以通过编程猫开始他们的编程之旅。",

        "你叫什么": "我叫……如您所见,我还没有名字,但这并不妨碍我能帮助您。",

        "114514": "好臭啊!!!",

        "1919810": "好臭啊!!!!",

        "2.5": "2.5是一个普通的数字,表示成分数是5/2",

        "背诵一下元素周期表": "很抱歉,将元素周期表完整地背出来是一项艰巨的任务,不适合在这种文本交互环境下完成。元素周期表共有118个元素,\
包括化学符号、原子序数和原子量等信息。背诵它们可能需要长时间的学习和记忆。\n\
如果你对元素周期表感兴趣,我建议你使用相关的学习资源,如教科书、在线课程、学习工具等。通过系统性的学习和反复练习,你将能够逐渐熟悉元素周期表,并记住更多的元素。\
另外,也可以通过使用现代技术和工具来辅助学习,例如使用化学学习软件、交互式应用程序或在线平台,它们通常会提供元素周期表和各种有趣的学习资源,使学习过程更加轻松和有趣。\
记住,理解元素周期表的基本规律和特点比完全背诵更重要。理解每个元素的特性、周期性趋势以及它们在化学中的应用,将能够更好地应用化学知识。\
如果你对特定元素或其他化学相关的问题有兴趣,我将很愿意在这方面提供帮助。",

        "你干嘛,哎哟!": "我只是一个AI,无法对您做什么。",

        "你是谁": "我是一个AI",

        "再见": "再见,祝您一天愉快!",

        "感谢": "不客气,我很乐意帮助您!",

        "天气": "您想查询哪个城市的天气?",

        "电影": "您想了解哪个电影的信息?",

        "音乐": "您想听哪首歌曲?",

        "翻译": "您需要翻译哪个词语或句子?",

        "计算": "请输入您要计算的数学表达式。",

        "学习": "您想学习哪个主题?",

        "健康": "保持身体健康很重要!请记得多锻炼和合理饮食。",

        "旅行": "您想去哪个目的地旅行?",

        "运动": "您平时喜欢做什么运动?",

        "科技": "科技的发展给我们的生活带来了很多便利。",

        "动物": "您有什么关于动物的问题吗?",

        "美食": "您最喜欢的美食是什么?",

        "文化": "不同的文化有着不同的特点和魅力。",

        "教育": "教育是一个人成长发展的重要环节。",

        "艺术": "艺术能够表达人们的情感和创造力。"

        #可以添加

    }
    if (calculate_similarity(input_str, '再见') > 0.7):
        print('结束对话')
        goon = False

    threshold = 0.35  # 相似度阈值
    threshold_now = 0

    similar_values = ''  # 存储相似的值

    for key in key_value_pairs:
        similarity = calculate_similarity(input_str, key)
        if similarity > threshold and similarity > threshold_now:
            similar_values = key_value_pairs[key]
            threshold_now = threshold_now

    if(similar_values == ''):
        return '抱歉,我不知道'
    else:
        return similar_values


# 字符串相似度计算

def calculate_similarity(str1, str2):
    m, n = len(str1), len(str2)
    dp = [[0] * (n + 1) for _ in range(m + 1)]

    for i in range(m + 1):
        dp[i][0] = i
    for j in range(n + 1):
        dp[0][j] = j

    for i in range(1, m + 1):
        for j in range(1, n + 1):
            if str1[i - 1] == str2[j - 1]:
                dp[i][j] = dp[i - 1][j - 1]
            else:
                dp[i][j] = min(dp[i - 1][j - 1], dp[i]
                               [j - 1], dp[i - 1][j]) + 1

    max_length = max(m, n)
    similarity = 1 - dp[m][n] / max_length

    return similarity

 另外还必须要有一个这样的文件,来储存用户添加的答案(文件名:AI文档)


类型是文本文件,编码一般选择……随便(我的是Unix ),反正直接在代码里改一下就行。

准备好后直接使用就好啦 

 

另外AI判断的文档太臃肿了,有没有大佬能想个办法,直接从文本文件中读取键值对,这样就不用写在代码里,就可以减轻很多体积。  


回复

上一页1 页 / 共 1下一页
༺追梦の人༻༺追梦の人༻

用open活着read函数

点赞0


评论