Python戀愛小助手之必拿下
導(dǎo)語
害!現(xiàn)在是10月份了,國慶過完也降溫了——還有幾個月就過年了,哦吼~
這一年就快過去了,不知道小編帶給大家這么多的表白代碼都用了沒?用了沒吖?如果沒用的話小編會繼續(xù)助攻!
不知道各位單身人士,有沒有人從單身dog進(jìn)化為秀恩愛dog撒~

Ps——小故事
在我大四的時候,就有一個計算機(jī)的朋友用自己做的代碼感動了一個數(shù)學(xué)系的女生。
就是下面這種。(這個愛心是詞云圖制作而成的?。┮膊恢罏槭裁疵米臃艞壛巳?0多位帥哥(沒錯,他們班就她一
個女生),而選擇了頭發(fā)日漸稀疏已經(jīng)“六月懷胎”的我——朋友。

今天,我就來教大家一下,如何用Python做二份特別的禮物送給自己的戀人。
當(dāng)然了,如果還是單身的,也可以把這個作為表白神器,跟心愛的人表白。
懂編程的就看下面的吧!送上這份禮物之后,保證你明晚.....巫山云雨后,天氣晚來秋啊!嘿嘿嘿嘿~

正文

你是不是喜歡我?好巧,我也是吖~

一、Part 1 表白篇—界面化表白小程序
1)環(huán)境安裝
本文是基于Tkinter的界面化小程序,準(zhǔn)備好相應(yīng)的安裝環(huán)境素材如下:
Python3、Pycharm、Pygame模塊以及一些自帶的就不說啦!
統(tǒng)一安裝模塊命令:pip install -i https://pypi.douban.com/simple/ +模塊名
2)素材自備
這邊小編準(zhǔn)備的部分圖片如下:

一些背景音樂、字體當(dāng)然也要準(zhǔn)備好滴哈:


3)正式敲代碼
3.1 先介紹下代碼部分單詞的作用
Function: 按鈕類 Initial Args: --x, y: 按鈕左上角坐標(biāo) --width, height: 按鈕寬高 --text: 按鈕顯示的文字 --fontpath: 字體路徑 --fontsize: 字體大小 --fontcolor: 字體顏色 --bgcolors: 按鈕背景顏色 --is_want_to_be_selected: 按鈕是否想被玩家選中 --screensize: 軟件屏幕大小 '''
3.2 配置一些界面窗口的小設(shè)置
# 窗口大小(width, height) SCREENSIZE = (500, 260) # 定義一些顏色 RED = (255, 0, 0) BLACK = (0, 0, 0) AZURE = (240, 255, 255) WHITE = (255, 255, 255) MISTYROSE = (255, 228, 225) PALETURQUOISE = (175, 238, 238) PAPAYAWHIP = (255, 239, 213) LIGHTGRAY = (211, 211, 211) GAINSBORO = (230, 230, 230) WHITESMOKE = (245, 245, 245) DARKGRAY = (169, 169, 169) BLUE = (0, 0, 255) DEEPSKYBLUE = (0, 191, 255) SKYBLUE = (135, 206, 235) LIGHTSKYBLUE = (135, 206, 250) # 背景音樂路徑 BGM_PATH = os.path.join(os.getcwd(), 'resources/music/bgm.mp3') # 字體路徑 FONT_PATH = os.path.join(os.getcwd(), 'resources/font/STXINGKA.TTF') # 背景圖片路徑 BG_IMAGE_PATH = os.path.join(os.getcwd(), 'resources/images/01.jpg') # ICON路徑 ICON_IMAGE_PATH = os.path.join(os.getcwd(), 'resources/images/icon.png')
3.3 主函數(shù)
def main():
# 初始化
pygame.init()
screen = pygame.display.set_mode(cfg.SCREENSIZE, 0, 32)
pygame.display.set_icon(pygame.image.load(cfg.ICON_IMAGE_PATH))
pygame.display.set_caption('你知道嘛?')
# 背景音樂
pygame.mixer.music.load(cfg.BGM_PATH)
pygame.mixer.music.play(-1, 30.0)
# biu愛心那個背景圖片
bg_image = pygame.image.load(cfg.BG_IMAGE_PATH)
bg_image = pygame.transform.smoothscale(bg_image, (150, 150))
# 實(shí)例化兩個按鈕
button_yes = Button(x=20, y=cfg.SCREENSIZE[1]-70, width=120, height=35,
text='愿意', fontpath=cfg.FONT_PATH, fontsize=15, fontcolor=cfg.BLACK, edgecolor=cfg.SKYBLUE,
edgesize=2, bgcolors=[cfg.DARKGRAY, cfg.GAINSBORO], is_want_to_be_selected=True, screensize=cfg.SCREENSIZE)
button_no = Button(x=cfg.SCREENSIZE[0]-140, y=cfg.SCREENSIZE[1]-70, width=120, height=35,
text='不愿意', fontpath=cfg.FONT_PATH, fontsize=15, fontcolor=cfg.BLACK, edgecolor=cfg.DARKGRAY,
edgesize=1, bgcolors=[cfg.DARKGRAY, cfg.GAINSBORO], is_want_to_be_selected=False, screensize=cfg.SCREENSIZE)
# 是否點(diǎn)擊了好呀按鈕
is_agree = False
# 主循環(huán)
clock = pygame.time.Clock()
while True:
# --背景圖片
screen.fill(cfg.WHITE)
screen.blit(bg_image, (cfg.SCREENSIZE[0]-bg_image.get_height(), 0))
# --鼠標(biāo)事件捕獲
for event in pygame.event.get():
if event.type == pygame.QUIT:
# ----沒有點(diǎn)擊好呀按鈕之前不許退出程序
if is_agree:
pygame.quit()
sys.exit()
elif event.type == pygame.MOUSEBUTTONDOWN and event.button:
if button_yes.rect.collidepoint(pygame.mouse.get_pos()):
button_yes.is_selected = True
root = Tk()
root.withdraw()
messagebox.showinfo('', '永遠(yuǎn)愛你')
root.destroy()
is_agree = True
# --顯示文字
showText(screen=screen, text='自從我們相遇的那一刻,', position=(40, 50),
fontpath=cfg.FONT_PATH, fontsize=25, fontcolor=cfg.BLACK, is_bold=False)
showText(screen=screen, text='你是我白天黑夜不落的星!', position=(40, 100),
fontpath=cfg.FONT_PATH, fontsize=25, fontcolor=cfg.BLACK, is_bold=True)
# --顯示按鈕
button_yes.draw(screen, pygame.mouse.get_pos())
button_no.draw(screen, pygame.mouse.get_pos())
# --刷新
pygame.display.update()
clock.tick(60)
4)效果圖
運(yùn)行代碼之后——背景音樂一上來就有那個味兒了~嘿嘿 超浪漫,界面也很好看的吖——想要什么字體、界面可以自己設(shè)置修改優(yōu)化的!
4.1 自從我們相遇的那一刻,你是我白天黑夜不落的星。 ——萊蒙托夫《烏黑的眼睛》

4.2 我會不愛你嗎?不愛你?不會,愛你就像愛生命?!跣〔?/p>

4.3 情侶超甜——甜度爆表??!哈哈哈啊


二、Part 2 表白篇—字符畫表白小程序
1)環(huán)境安裝
相應(yīng)的安裝環(huán)境素材如下:
Python3、Pycharm、Pillow模塊以及一些自帶的就不說啦!
統(tǒng)一安裝模塊命令:pip install -i https://pypi.douban.com/simple/ +模塊名
2)素材自備
這邊小編準(zhǔn)備的部分圖片如下:

3) 正式敲代碼
3.1主要代碼
#-*- coding=utf-8 -*-
from PIL import Image
IMG = '02.jpg' #設(shè)置圖片文件
WIDTH = 150 #設(shè)置字符畫的寬
HEIGHT = 80 #設(shè)置字符畫的高
OUTPUT = 'ym.txt' #設(shè)置存放字符畫的文本文件
ascii_char = list("我喜歡你") #設(shè)置顯示的字符集
#將256灰度映射到70個字符上
def get_char(r,g,b,alpha = 256):
#alpha為透明度
# 判斷 alpha 值,為0表示全透明
if alpha == 0:
return ' '
# 獲取字符集的長度,這里為 70
length = len(ascii_char)
# 將 RGB 值轉(zhuǎn)為灰度值 gray,灰度值范圍為 0-255
gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
# 灰度值范圍為 0-255,而字符集只有 70
# 需要進(jìn)行如下處理才能將灰度值映射到指定的字符上
#防止當(dāng)灰度值為255時,輸出的第70個字符超出列表索引,所以需要將(255+1)
unit = (255.0 + 1)/length
# 返回灰度值對應(yīng)的字符
return ascii_char[int(gray/unit)]
if __name__ == '__main__':
# 打開并調(diào)整圖片的寬和高
im = Image.open(IMG)
im = im.resize((WIDTH,HEIGHT), Image.NEAREST)
# 初始化輸出的字符串
txt = ""
# 遍歷圖片中的每一行
for i in range(HEIGHT):
# 遍歷該行中的每一列
for j in range(WIDTH):
# 將 (j,i) 坐標(biāo)的 RGB 像素轉(zhuǎn)為字符后添加到 txt 字符串
txt += get_char(*im.getpixel((j,i)))
# 遍歷完一行后需要增加換行符
txt += '\n'
# 輸出到屏幕
print(txt)
with open(OUTPUT,'w') as f:
f.write(txt)
4)效果圖
4.1 圖跟文字選的不好,所以效果有點(diǎn)兒社會性死亡了!哈哈哈~尷尬的笑笑緩解一下,不要是去表白的結(jié)果變成分手了哈!

4.2 這張圖選擇我估計看不出來是個人了!所以說——選擇圖片跟文字是有技巧的,只是我比較懶!

總結(jié)
“余生很長,想和你沒完沒了”——所以看到這里的小伙伴兒記得收藏哦!哈哈哈
好啦 !這二款表白的代碼就寫到這里了哈,是不是今天又學(xué)到了一招會撩妹紙撩漢子的小技巧。趕快自己去試試吧~
你們的支持是我最大的動力??!mua 歡迎大家閱讀往期的文章哦~
到此這篇關(guān)于Python戀愛小助手之必拿下的文章就介紹到這了,更多相關(guān)Python 戀愛小程序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python運(yùn)行出現(xiàn)DeprecationWarning的問題及解決
這篇文章主要介紹了Python運(yùn)行出現(xiàn)DeprecationWarning的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07
使用Python編寫類UNIX系統(tǒng)的命令行工具的教程
這篇文章主要介紹了使用Python編寫類UNIX系統(tǒng)的命令行工具的教程,本文來自于IBM官方網(wǎng)站技術(shù)文檔,需要的朋友可以參考下2015-04-04
如何優(yōu)雅地改進(jìn)Django中的模板碎片緩存詳解
這篇文章主要給大家介紹了關(guān)于如何優(yōu)雅地改進(jìn)Django中的模板碎片緩存的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07
python定時復(fù)制遠(yuǎn)程文件夾中所有文件
這篇文章主要為大家詳細(xì)介紹了python定時復(fù)制遠(yuǎn)程文件夾中所有文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04
分析機(jī)器學(xué)習(xí)之決策樹Python實(shí)現(xiàn)
決策樹是一種非參數(shù)的有監(jiān)督學(xué)習(xí)方法,它能夠從一系列有特征和標(biāo)簽的數(shù)據(jù)中總結(jié)出決策規(guī)則,并用樹狀圖的結(jié)構(gòu)來呈現(xiàn)這些規(guī)則,以解決分類和回歸問題。決策樹算法容易理解,適用各種數(shù)據(jù),在解決各種問題時都有良好表現(xiàn)2021-06-06
Python使用Flask-SQLAlchemy連接數(shù)據(jù)庫操作示例
這篇文章主要介紹了Python使用Flask-SQLAlchemy連接數(shù)據(jù)庫操作,簡單介紹了flask、Mysql-Python以及Flask-SQLAlchemy的安裝方法,并結(jié)合實(shí)例形式分析了基于Flask-SQLAlchemy的數(shù)據(jù)庫連接相關(guān)操作技巧,需要的朋友可以參考下2018-08-08
django模型類中,null=True,blank=True用法說明
這篇文章主要介紹了django模型類中,null=True,blank=True用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07

