明天就是七夕了,晓得你们有女票的或者正在追妹子的,肯定又在绞尽脑汁想买什么别出新裁的礼物,如果女生感觉你的礼物花心思了,那肯定是好感度倍增啊。

今天给各位分享一个用 Python 制作的成本一毛钱却诚意满满的小礼物。不过需要提醒的是:这个礼物需要妹子花点心思才能领会,没有耐心的那种的妹子,千万不要给她,因为这可能会是分手神器。

下面就来说说,怎么制作这个礼物。

简单来说就用一张A4纸,打印个表格,嗯,表格是干啥用?其实就是手绘二维码,当然二维码内容你懂得,利用的下面这个手绘二维码app,会分成格子,提示你哪个涂黑。

不过,这种套路貌似被用滥了

所以今天说的这个明显是手绘二维码的升级版,成本依然是一毛钱,不仅你要费心思,女孩也要去费心思,这样才好玩嘛

「数织游戏」

来,我们一步一步来,我们先说说数织这个游戏,然后你就知道大概用意了。数织(nonogram)是日本人的数独游戏。

如下是数织的规则,简单易懂。分行和列,行和列都标记了一些数字,比如下图的第一行7 1 2 7,代表第一行有四条独立的线,分别占了7、1、2和7格,而每条线最少要由一个空格分开。

传统上,玩家是以黑色填满格子,以“×”号标记一定不需要填充的格子。所以聪明的你肯定就会知道第一列7 1 1 1 7代表什么意思。

所以数织就是如下这样玩,给你的图片只有行列数字,格子需要自己根据规则涂黑,所以你也知道了,我们做的就是下面的图,将二维码隐藏其中。让女孩涂黑,扫码即可。

「制作隐藏二维码的数织图」

你说怎么做出上图呢?

对于笨办法,就是开头说的手绘二维码app,如下它会分21*21或者更多的格子,告诉你哪个该涂黑,相应的你就知道该填写哪些数织数字。

可上面做法确实繁琐了,数字自己写,还得整理打印。

咋办呢?

下面就是 Python 出场的时候了,用 Python 编写一个输入二维码文字,一键生成数织图片的程序然后直接打印即可

完整代码如下:

import numpy as npimport matplotlib.pyplot as pltfrom matplotlib.pyplot import savefigimport qrcodedef qr_matrix(data): qr = qrcode.QRCode(version=1, box_size=1, border=1) qr.add_data(data) return np.asarray(qr.get_matrix(), dtype = int)def _rle(matrix): # find run start and ends d = np.diff(matrix) row, start_pos = np.where(d > 0) _, end_pos = np.where(d < 0) # find run lengths run_lengths = end_pos - start_pos # split runs from different rows into separate arrays split_on = np.cumsum(np.bincount(row - 1))[:-1] return np.split(run_lengths, split_on)def run_length_encode(matrix): rle_row = _rle(matrix) rle_col = _rle(matrix.T) return rle_row, rle_coldef nonogram_qr(data): qr = qr_matrix(data) row_rle, col_rle = run_length_encode(qr) shape = np.array(qr.shape) - 2 return shape, row_rle, col_rledef draw_nonogram(shape, row_rle, col_rle): r, c = shape f = open('qr.griddler', "w") f.write('MK Version 3.0') f.write('') f.write('') f.write(str(r)+' '+str(c)) f.write('') f.write('') q=np.zeros((r,c),dtype=int) for qq in q: f.write(str(qq)[1:-1].replace("0", "?")) f.write('') f.write('') for col in col_rle: f.writelines(str(col[::-1])[1:-1]) f.write('') f.write('') for row in row_rle: f.writelines(str(row[::-1])[1:-1]) f.write('') fig, ax = plt.subplots(figsize=(10, 10)) plt.axis('off') plt.axis('equal') # draw the grid for the nonogram: for i in range(r + 1): ax.plot([0, c], [-i, -i], 'k-') for j in range(c + 1): ax.plot([j, j], [0, -r], 'k-') # draw the numbers onto the grid for i, row in enumerate(row_rle): for idx, val in enumerate(row[::-1]): ax.annotate(xy=(-idx - 0.5, -i - 0.5), s=val, ha='center', va='center') for j, col in enumerate(col_rle): for idx, val in enumerate(col[::-1]): ax.annotate(xy=(j + 0.5, idx + 0.5), s=val, ha='center', va='center') # adjust x and y limits lim_left = max([len(x) for x in row_rle + col_rle]) + 1 lim_right = max(r, c) + 1 ax.set_xlim(-lim_left, lim_right) ax.set_ylim(-lim_right, lim_left) return axname=input('请输入二维码内容(比如我爱你?):')ax = draw_nonogram(*nonogram_qr(name))print('制作完成,图片名字叫做:打印吧.jpg')savefig("打印吧.jpg")# plt.show()

当然不想这么麻烦的话,我这里把程序也打包好了,各位直接运行exe 程序即可。

下面说说这个打包程序。

如下,下载解压,运行(注意可能打开速度挺慢,耐心等待黑框出现),输入二维码文字。

然后回车,等待,就能在软件目录看到打印吧.jpg。

这个图片你要准备的一毛钱礼物

,如下所示:

而细心的你肯定还看到另一个箭头的文件:qr.griddler,嗯,这个也很有意思,我们接着说。

「数织解密软件」

其实吧,这个生成的21*21或者以上大小的数织难度还是挺高的,不能让女友做不出来啊,你得在身边提示一下啊,那么这款解密软件派上用场。

我们下载解压打开,如下打开我们前文生成的qr.griddler。

然后点击如下箭头指示按钮即可解密,如下动图(小概率会发生多个解的现象,不过二维码有容错率,所以扫到的文字是一样的):

这同时也是验证的过程,万一出的题无解,不过这个的程序应该没啥问题,应该不会出现这种现象

「小结」

这个礼物认认真真整出来,估计得花个个把小时,七夕好时光,好好利用哈。

转载于:https://www.cnblogs.com/qingdeng123/p/11311685.html

明天就是七夕了,用Python做了个可能会被女朋友打死的礼物!相关推荐

  1. 教师节我用Python做了个学生点名系统送给老师当礼物,这回毕业稳了

    今年教师节前夕,我特意用Python做了个学生点名系统,非常好用,送给各科老师.辅导员当节日礼物,老师们都喜滋滋,说平常逃课就原谅我了,我心想,这次毕业应该不是问题了~ 本文背景 根据我的调查,现在的 ...

  2. 如何用python做一个会聊天的女朋友_520来啦~教你用Python给自己造了一个女朋友!...

    520这一天,也是网络情人节.就在那天,如果没有女朋友的自己,如何假装自己是有朋友的!如何在朋友圈"秀恩爱. 女生版: image 很有感觉有木有~~ 男生版: image image 其实 ...

  3. 如何用python做一个会聊天的女朋友_戏精程序员,用python开发了一个女朋友,天天秀恩爱...

    很多人都知道,程序员大部分都是单身狗,然而,无奈Python实在太强大,居然可以用来开发一个女朋友出来. 其实,这个女朋友类似很多视频中,那些假装自己有女朋友或男朋友的人一样,也是在假装哦,但是程序员 ...

  4. 玩自己用python做的八音符,女朋友一晚没睡!

    相信大家对八音符都不陌生,就和显示中的音乐喷泉一个原理,声音越大水就越高,到了手机上就成了控制人物进行移动 原版介绍 相信很多人对八音符这款游戏并不陌生吧,其玩法是利用声音控制一个小黑球不断前进,大概 ...

  5. 用 Python 给女友做了个可能会被打死的七夕礼物

    明天就是七夕了,晓得你们有女票的或者正在追妹子的,肯定又在绞尽脑汁想买什么别出新裁的礼物,如果女生感觉你的礼物花心思了,那肯定是好感度倍增啊. 今天给各位分享一个用 Python 制作的成本一毛钱却诚 ...

  6. 用 Python 给女友做了个可能会被打死的七夕礼物 !

    明天就是七夕了,晓得你们有女票的或者正在追妹子的,肯定又在绞尽脑汁想买什么别出新裁的礼物,如果女生感觉你的礼物花心思了,那肯定是好感度倍增啊. 今天给各位分享一个用 Python 制作的成本一毛钱却诚 ...

  7. python做七夕礼物_python写七夕硬核礼物!

    明天就是七夕了! 如果有对象,祝早生贵子!没有对象,祝早结连理! (搞笑一下,祝大家幸福美满吧,嘿嘿嘿) 给大家准备了一份已经写好的代码,利用python+opencv+openpyxl,opencv ...

  8. 如何用Python做三阶拼图?

    作者 | Ahab 来源 | Ahab杂货铺(ID:AhabBin) 今天是年假的最后一天,明天大家就要回到各自的工作岗位上去,公众号从今天开始恢复更新.不知道大家假期过得怎么样,帅张提到假期多关注一 ...

  9. python制作中秋贺卡_中秋节到了,送你一个Python做的Crossin牌“月饼”

    明天是难得一见的国庆中秋双节合一,在这里除了祝大家节日快乐之外,我们还要送上一个"月饼"--当然这个月饼是不能吃的,因为它是用python做的.先给大家看一下效果图.图1. 月饼效 ...

最新文章

  1. maven3常用命令、java项目搭建、web项目搭建
  2. 循环灯c语言,单片机c语言循环灯
  3. pyecharts geo_pyechartstableau可视化分析案例+分析思路
  4. 怎样为wordpress主题的文章列表添加无插件分页?
  5. 什么是 css,关于css是什么
  6. win7 apache php mysql 配置64,win7 64位 Apache+php+mysql配置方法
  7. html样式超出出现滚动条,CSS 设置的高度超出屏幕高度为什么没出现滚动条?
  8. STL中的序列式容器——deque(双端队列)
  9. 利用utl_smtp从oracle数据库发送带blob附件的电子邮件
  10. windows11条件下将yafu路径添加到环境变量
  11. 极坐标潮流计算matlab,基于Matlab矩阵运算的潮流计算导纳矩阵计算方法与流程
  12. 怎么将B站上的视频下载到本地?
  13. 2018第九届蓝桥杯B组决赛题解第四题 调手表
  14. Adobe Premiere Pro CC教程笔记
  15. 报告总监,他...在代码里面 “下毒” 了
  16. Alpha版本冲刺(三)
  17. 操作系统---信号量
  18. Leetcode77 组合
  19. 今生,让我们记住盖茨!
  20. 利用Python+opencv进行视频文件的读取和保存,打开笔记本摄像头拍照保存、图像在窗口显示等操作

热门文章

  1. 【面试题4】谈谈以前端角度出发做好SEO需要考虑什么?
  2. 【定位不准的烦心事系列】第1篇:谈谈卫星定位的位置干扰
  3. C语言字模文件的使用,PCtoLCD2002(字模软件) 最新版 附使用指南
  4. 2022爱分析· 隐私计算厂商全景报告 | 爱分析报告
  5. css翘边阴影图片,【CSS】翘边阴影
  6. springboot热部署
  7. P1618 三连击(升级版)【全排列next_permutation】
  8. 关于大商创安装默认数据清空说明
  9. 【爬虫】每天定时爬取网页小故事并发送至指定邮箱
  10. 关于给汶川地震灾区捐款