Python番外篇:电脑读心术程序 快给你的同事朋友玩一玩

162 阅读2分钟

本人已参与【新人创作礼】活动,一起开启掘金创作之路。 本文首发于CSDN

hello,大家好,我是wangzirui32,今天我们来学习如何写一个电脑读心术程序,开始学习吧!

1. 原理介绍

本程序使用的读心术原理为吉普赛读心术,流程如下:

  1. 10~99之间任意挑选一个数
  2. 用这个数先减去它自己的十位数再减去它的个位数
  3. 把结果在一个表中找到对应的字母
  4. 水晶球(电脑)会显示你心里想的那个字母

原理是这样的,10~99之间的数减去个位,再减去十位,一定是9的倍数,如32,减去3再减2是27,然后输出的表中只要把每个9的倍数全部替换为相同的字母,就可以实现100%读出你内心的数了!

2. 编写代码

本程序使用pyttsx3进行语音输出,不了解的同学请跳转到之前的一篇博文学习,代码:

import random
import time
import pyttsx3

# 初始化
engine = pyttsx3.init()
# 设置随机数种子为当前时间戳
random.seed(time.time())
# 字母表
words = "qwertyuiopasdfghjklzxcvbnm"
# 随机选择一个字母作为结果
answer_word = random.choice(words)

# 输出消息的封装函数
def output_message(message):
    print(message)
    engine.say(message)
    engine.runAndWait()

output_message("请你在10~99之间随机选择一个数,给你2秒")
time.sleep(2)
output_message("想好了吗?现在,请将这个数减去个位,再减去十位,并且在下面的列表中找到结果对应的字母,")
output_message("如果找到了,请按回车键继续!")

# 输出100个数对应的字母
for i in range(1, 101):
    if i % 9 == 0:   # 如果为9的倍数
    	# 输出固定字母
        print("{} 对应 {}".format(i, answer_word))
    else:
        print("{} 对应 {}".format(i, random.choice(words)))

wait = input("如果找到了,请按回车键继续")
output_message("好了,现在请把这个字母在心中默念3遍。")
time.sleep(2)
output_message("电脑已经知道了你的字母,就是...")
time.sleep(2)
output_message(answer_word)
output_message("对吗?")

3. 玩一玩

我想的数是67,结果如下:

请你在10~99之间随机选择一个数,给你2秒
想好了吗?现在,请将这个数减去个位,再减去十位,并且在下面的列表中找到结果对应的字母,
如果找到了,请按回车键继续!
1 对应 z
2 对应 g
3 对应 y
......
53 对应 i
54 对应 f    # 我的计算结果
55 对应 u
.......
98 对应 l
99 对应 f
100 对应 c
如果找到了,请按回车键继续
好了,现在请把这个字母在心中默念3遍。
电脑已经知道了你的字母,就是...
f
对吗?

结果还真是对的!赶快给你的同事朋友玩一玩吧!


好了,今天的课程就到这里,我是wangzirui32,喜欢的可以点个收藏和关注,我们下次再见!