欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實(shí)現(xiàn)迷宮生成器的詳細(xì)代碼

 更新時(shí)間:2022年07月08日 17:11:01   作者:GodForever  
這篇文章主要介紹了Python實(shí)現(xiàn)迷宮生成器的詳細(xì)代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

作為一項(xiàng)古老的智力游戲,千百年來(lái)迷宮都散發(fā)著迷人的魅力。但是,手工設(shè)計(jì)迷宮費(fèi)時(shí)又耗(腦)力,于是,我們有必要制作一個(gè)程序:迷宮生成器……

好吧,我編不下去了。但是,從上面的文字中,我們可以看出,我們此次的主題是:用Python實(shí)現(xiàn)一個(gè)迷宮生成器。

首先展示一下效果圖:

我們先分析一下所需的庫(kù):

既然是生成器,每次生成的迷宮一模一樣顯然是說(shuō)不過(guò)去的。因此,我們不可避免地要使用隨機(jī)數(shù)(Random庫(kù))。迷宮一定是要繪制的,所以需要有一個(gè)GUI庫(kù)或繪圖庫(kù),這里我使用Pygame(Tkinter或Turtle其實(shí)都可以做到,但畢竟Pygame比較順手)。與Pygame搭配,Sys似乎也是需要的(用于退出程序,但其實(shí)不使用似乎也無(wú)傷大雅)。然后是Tkinter.filedialog,主要用于詢問(wèn)保存路徑(生成的迷宮總得保存吧)。當(dāng)然,用Time加一個(gè)計(jì)時(shí)器似乎是錦上添花。

于是,就有:

#coding:utf-8
import contextlib
with contextlib.redirect_stdout(None):
    import pygame
import random
import sys
import time
from tkinter.filedialog import *

這里要說(shuō)明的是,由于導(dǎo)入Pygame時(shí)會(huì)輸出版本信息等很多內(nèi)容(這很影響美感),我們需要使用Contextlib阻止它輸出。

接下來(lái),我們需要詢問(wèn)一些參數(shù):

a=int(input("列數(shù):"))
b=int(input("行數(shù):"))
l=int(input("大?。?))
saveit=input("是否保存:")

然后,就要運(yùn)行生成迷宮的程序了。同時(shí),我們有必要計(jì)錄一下時(shí)間(相當(dāng)于開(kāi)啟計(jì)時(shí)器):

print("生成中...")
e = time.time()

然后就是正式生成迷宮。在介紹這部分代碼之前,我們需要了解一下算法:

第一步,生成一個(gè)由迷宮單元(白格)和墻(黑格)組成的網(wǎng)格。一行中迷宮單元的數(shù)量為迷宮的列數(shù),一列找迷宮單元的數(shù)量為迷宮的行數(shù)。令左上角的迷宮單元為起點(diǎn),右下角的迷宮單元為終點(diǎn),打破起點(diǎn)左邊與終點(diǎn)右邊的墻,如圖所示:

第二步,訪問(wèn)各迷宮單元。將起點(diǎn)標(biāo)記為當(dāng)前迷宮單元,當(dāng)存在未被訪問(wèn)的迷宮單元(凡是曾經(jīng)成為過(guò)當(dāng)前迷宮單元的迷宮單元,都視為已訪問(wèn))時(shí),重復(fù)執(zhí)行:

  • 將周圍的未被訪問(wèn)的迷宮單元加入表格;
  •  如果表格中有迷宮單元:
    • 將當(dāng)前迷宮單元入棧(可以理解為將其加入一個(gè)叫做棧的表格);
    • 從表格中隨機(jī)選擇一個(gè)迷宮單元;
    • 打破當(dāng)前迷宮單元與選擇的迷宮單元之間的墻;
    • 將選擇的迷宮單元標(biāo)記為當(dāng)前迷宮單元;
  • 如果表格中沒(méi)有迷宮單元:
    • 棧頂迷宮單元出棧(可以理解為將棧中的最后一個(gè)元素獲取并刪除);
    • 將出棧的迷宮單元設(shè)為當(dāng)前迷宮單元;

在循環(huán)結(jié)束以后,就會(huì)出現(xiàn)像文章開(kāi)頭效果圖一樣的結(jié)果。

接下來(lái),我們就要將文字化的算法轉(zhuǎn)化為Python的代碼。

首先,程序是不認(rèn)識(shí)圖片的,它認(rèn)識(shí)的是數(shù)據(jù)。所以我們需要設(shè)置一個(gè)二維列表,以此來(lái)用一串?dāng)?shù)據(jù)表示當(dāng)前的圖像。當(dāng)然,我們可以順便將第一步的設(shè)置一起完成:

alist = []
aa=0
need=[]
for j in range(2*a+1):
    if aa==0:
        aa = 1
        alistone = []
        for i in range(2*b+1):
            alistone.append(1)
        alist.append(alistone)
    else:
        aa=0
        alistone = []
        bb=0
        for i in range(2*b+1):
            if bb==0:
                bb=1
                alistone.append(1)
            else:
                bb = 0
                need.append((j,i))
                alistone.append(0)
        alist.append(alistone)
alist[0][1]=0
alist[-1][-2]=0

可以看到,除此以外我們還建立了一個(gè)列表need,里面存儲(chǔ)了所有的迷宮單元。它的作用就是判斷迷宮單元是否被訪問(wèn),每次訪問(wèn)都會(huì)將迷宮單元從表格中刪除,當(dāng)表格中沒(méi)有迷宮單元時(shí),就說(shuō)明所有迷宮單元都被訪問(wèn)了。

x=1
y=1
need.remove((1, 1))
listing=[]
while len(need)>0:
    aroundit=[]
    try:
        if x-2<0:
            print(1+"1")
        alist[x-2][y]=0
        if (x-2,y) in need:
            aroundit.append("alist[x-1][y],x=(0,x-2)")
    except:
        while False:
            print()
    try:
        alist[x+2][y]=0
        if (x+2,y) in need:
            aroundit.append("alist[x+1][y],x=(0,x+2)")
    except:
        while False:
            print()
    try:
        alist[x][y+2]=0
        if (x,y+2) in need:
            aroundit.append("alist[x][y+1],y=(0,y+2)")
    except:
        while False:
            print()
    try:
        if y-2<0:
            print(1+"1")
        alist[x][y-2]=0
        if (x,y-2) in need:
            aroundit.append("alist[x][y-1],y=(0,y-2)")
    except:
        while False:
            print()
    if len(aroundit)>0:
        listing.append((x,y))
        exec(random.choice(aroundit))
        need.remove((x, y))
    else:
        x,y=listing[-1]
        listing.pop()

而這些內(nèi)容,就是第二步。其算法我已經(jīng)解釋過(guò),唯一一個(gè)微小的不同是,在此處我們并沒(méi)有在列表中加入相鄰迷宮單元的坐標(biāo),而是將其對(duì)應(yīng)的破墻和標(biāo)記為當(dāng)前迷宮單元的代碼以字符串的形式存儲(chǔ)在表格中,并在隨機(jī)選擇出某個(gè)迷宮單元所對(duì)應(yīng)的字符串后,使用exec將其轉(zhuǎn)換為代碼并運(yùn)行(這可以節(jié)省一些代碼)。

print("完成!用時(shí){}秒".format(time.time()-e))

打印完生成迷宮的用時(shí)后,我們需要將表格中的數(shù)據(jù)轉(zhuǎn)化為圖像了。當(dāng)然,在此之前,我們要先確定圖片保存的位置。

if saveit=="1":
    ccc = askdirectory()
    h=""
    bbbbb=1
    while True:
        try:
            open("{}/{}×{}迷宮{}.png".format(ccc,a,b,h),"r")
            h="({})".format(bbbbb)
        except:
            break
        bbbbb+=1

由于使用時(shí)有可能選擇不保存圖片,因此要先判斷你的選擇是保存還是不保存。這里字符“1”表示保存(輸入其他,自然就是不保存了)。然后我們需要讓你選擇保存路徑(askdirectory()詢問(wèn)的是文件路徑,不需要選擇文件名)。然后,我們要確定文件名稱:“a×b迷宮.png”。這里需要判斷指定路徑是否存在此名稱的文件,如果存在,則我們需要在后面加上序號(hào)??偠灾?,通過(guò)這串代碼,我們已經(jīng)將迷宮的路徑+文件名確定了。

pygame.init()
icon=pygame.image.load("迷宮.png")
pygame.display.set_icon(icon)
screen=pygame.display.Info()
screen = pygame.display.set_mode((l*(2*a+1),l*(2*b+1)))
pygame.display.set_caption('迷宮')
screen.fill("white")
c = pygame.Surface((l, l), flags=pygame.HWSURFACE)
c.fill(color='white')
d = pygame.Surface((l, l), flags=pygame.HWSURFACE)
d.fill(color='black')
for i in range(2*a+1):
    for j in range(2*b+1):
        if alist[i][j]==0:
            screen.blit(c, (i*l, j*l))
        elif alist[i][j]==1:
            screen.blit(d, (i*l, j*l))
pygame.display.flip()
if saveit=="1":
    pygame.image.save(screen, "{}/{}×{}迷宮{}.png".format(ccc, a, b, h))
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

代碼中使用的圖片“迷宮.png”(名稱不太對(duì),下載以后要重新命名一下):

這里主要是Pygame的基本設(shè)置,并將表格內(nèi)容圖像化。每一個(gè)數(shù)字代表一個(gè)方塊,而數(shù)字的值則決定了方塊的顏色,數(shù)字在表格中的位置決定了方塊的位置。就這樣,我們呢將表格完全轉(zhuǎn)化成了圖像。當(dāng)然,我們還需要用pygame.image.save()函數(shù)將圖像保存為圖片文件。

這樣,這個(gè)生成器似乎完成了。

它運(yùn)行良好,但當(dāng)迷宮比較復(fù)雜時(shí),暴露出一個(gè)問(wèn)題(下圖是100×100的迷宮):

由于正確路徑過(guò)于曲折,在復(fù)雜度較高時(shí),這個(gè)迷宮的難度會(huì)變得極高!

難度高,在某方面上講,的確是好事。但當(dāng)你向你的朋友們展示這個(gè)迷宮時(shí),如果你自己也無(wú)法得出正確的路徑,這不是很掃興嗎?

因此,一個(gè)尋路算法變得非常有必要。

尋路算法的大體思路:

在生成的迷宮中,白格為路,黑格為墻。將起點(diǎn)設(shè)置為當(dāng)前位置,重復(fù)執(zhí)行直到終點(diǎn)成為當(dāng)前位置:

  • 將當(dāng)前位置標(biāo)記為正確路徑;
  • 將周圍未標(biāo)記的路加入一個(gè)表格;
  • 如果表格不空:
    • 將當(dāng)前位置入棧;
    • 從表格中隨機(jī)選擇一條路,并將其設(shè)為當(dāng)前位置;
  • 如果表格是空的:
    • 棧頂?shù)穆烦鰲#?/li>
    • 將其設(shè)為當(dāng)前位置;

通過(guò)這個(gè)算法,我們可以試出正確的路徑(如圖):

代碼的實(shí)現(xiàn):

x2=0
y2=1
listing2=[]
while not(alist[-1][-2]==2):
    alist[x2][y2]=3
    around2=[]
    try:
        if x2-1<0:
            print(1+"1")
        if alist[x2-1][y2]==0:
            around2.append("x2=x2-1")
    except:
        while False:
            print()
    try:
        if alist[x2+1][y2]==0:
            around2.append("x2=x2+1")
    except:
        while False:
            print()
    try:
        if alist[x2][y2+1]==0:
            around2.append("y2=y2+1")
    except:
        while False:
            print()
    try:
        if y2-1<0:
            print(1+"1")
        if alist[x2][y2-1]==0:
            around2.append("y2=y2-1")
    except:
        while False:
            print()
    if len(around2)>0:
        listing2.append((x2,y2))
        exec(random.choice(around2))
    else:
        alist[x2][y2]=2
        x2,y2=listing2[-1]
        listing2.pop()
alist[-1][-2]=3
for i in range(len(alist)):
    for j in range(len(alist[0])):
        if alist[i][j]==2:
            alist[i][j]=0

同時(shí),圖像繪制的過(guò)程也要作出一些改動(dòng),以顯示正確路徑:

if saveit=="1":
    ccc = askdirectory()
    h=""
    bbbbb=1
    while True:
        try:
            open("{}/{}×{}迷宮{}.png".format(ccc,a,b,h),"r")
            open("{}/{}×{}迷宮(正確線路){}.png".format(ccc,a,b,h),"r")
            h="({})".format(bbbbb)
        except:
            break
        bbbbb+=1
pygame.init()
icon=pygame.image.load("迷宮.png")
pygame.display.set_icon(icon)
screen=pygame.display.Info()
screen = pygame.display.set_mode((l*(2*a+1),l*(2*b+1)))
pygame.display.set_caption('迷宮')
screen.fill("white")
if saveit=="1":
    c = pygame.Surface((l, l), flags=pygame.HWSURFACE)
    c.fill(color='white')
    d = pygame.Surface((l, l), flags=pygame.HWSURFACE)
    d.fill(color='black')
    f = pygame.Surface((l, l), flags=pygame.HWSURFACE)
    f.fill(color='white')
    for i in range(2 * a + 1):
        for j in range(2 * b + 1):
            if alist[i][j] == 0:
                screen.blit(c, (i * l, j * l))
            elif alist[i][j] == 1:
                screen.blit(d, (i * l, j * l))
            else:
                screen.blit(f, (i * l, j * l))
    pygame.image.save(screen, "{}/{}×{}迷宮{}.png".format(ccc, a, b, h))
    c = pygame.Surface((l, l), flags=pygame.HWSURFACE)
    c.fill(color='white')
    d = pygame.Surface((l, l), flags=pygame.HWSURFACE)
    d.fill(color='black')
    f = pygame.Surface((l, l), flags=pygame.HWSURFACE)
    f.fill(color='red')
    for i in range(2 * a + 1):
        for j in range(2 * b + 1):
            if alist[i][j] == 0:
                screen.blit(c, (i * l, j * l))
            elif alist[i][j] == 1:
                screen.blit(d, (i * l, j * l))
            else:
                screen.blit(f, (i * l, j * l))
    pygame.image.save(screen, "{}/{}×{}迷宮(正確線路){}.png".format(ccc, a, b, h))
c = pygame.Surface((l, l), flags=pygame.HWSURFACE)
c.fill(color='white')
d = pygame.Surface((l, l), flags=pygame.HWSURFACE)
d.fill(color='black')
f = pygame.Surface((l, l), flags=pygame.HWSURFACE)
f.fill(color='white')
for i in range(2*a+1):
    for j in range(2*b+1):
        if alist[i][j]==0:
            screen.blit(c, (i*l, j*l))
        elif alist[i][j]==1:
            screen.blit(d, (i*l, j*l))
        else:
            screen.blit(f,(i*l, j*l))
pygame.display.flip()
aaaaaaa = 0
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        if event.type == pygame.MOUSEBUTTONDOWN:
            if aaaaaaa == 1:
                aaaaaaa = 0
                c = pygame.Surface((l, l), flags=pygame.HWSURFACE)
                c.fill(color='white')
                d = pygame.Surface((l, l), flags=pygame.HWSURFACE)
                d.fill(color='black')
                f = pygame.Surface((l, l), flags=pygame.HWSURFACE)
                f.fill(color='white')
                for i in range(2 * a + 1):
                    for j in range(2 * b + 1):
                        if alist[i][j] == 0:
                            screen.blit(c, (i * l, j * l))
                        elif alist[i][j] == 1:
                            screen.blit(d, (i * l, j * l))
                        else:
                            screen.blit(f, (i * l, j * l))
                pygame.display.flip()
            else:
                aaaaaaa = 1
                c = pygame.Surface((l, l), flags=pygame.HWSURFACE)
                c.fill(color='white')
                d = pygame.Surface((l, l), flags=pygame.HWSURFACE)
                d.fill(color='black')
                f = pygame.Surface((l, l), flags=pygame.HWSURFACE)
                f.fill(color='red')
                for i in range(2 * a + 1):
                    for j in range(2 * b + 1):
                        if alist[i][j] == 0:
                            screen.blit(c, (i * l, j * l))
                        elif alist[i][j] == 1:
                            screen.blit(d, (i * l, j * l))
                        else:
                            screen.blit(f, (i * l, j * l))
                pygame.display.flip()

通過(guò)這些改動(dòng),顯示正確路徑的效果就實(shí)現(xiàn)了。生成完成以后,窗口上顯示的是沒(méi)有正確路徑的迷宮,而點(diǎn)擊窗口后,正確的路徑就會(huì)顯示(再次點(diǎn)擊隱藏)。

剛剛那張100×100的迷宮,其正確路徑是:

可以看出,本文中所用的算法生成的迷宮,其正確路徑還是非常曲折的(難度很高)。你何不將其發(fā)給你的朋友,讓其破解一下呢?

完整的代碼:

#coding:utf-8
import contextlib
with contextlib.redirect_stdout(None):
    import pygame
import random
import sys
import time
from tkinter.filedialog import *
a=int(input("列數(shù):"))
b=int(input("行數(shù):"))
l=int(input("大小:"))
saveit=input("是否保存:")
print("生成中...")
e = time.time()
alist = []
aa=0
need=[]
for j in range(2*a+1):
    if aa==0:
        aa = 1
        alistone = []
        for i in range(2*b+1):
            alistone.append(1)
        alist.append(alistone)
    else:
        aa=0
        alistone = []
        bb=0
        for i in range(2*b+1):
            if bb==0:
                bb=1
                alistone.append(1)
            else:
                bb = 0
                need.append((j,i))
                alistone.append(0)
        alist.append(alistone)
alist[0][1]=0
alist[-1][-2]=0
x=1
y=1
need.remove((1, 1))
listing=[]
while len(need)>0:
    aroundit=[]
    try:
        if x-2<0:
            print(1+"1")
        alist[x-2][y]=0
        if (x-2,y) in need:
            aroundit.append("alist[x-1][y],x=(0,x-2)")
    except:
        while False:
            print()
    try:
        alist[x+2][y]=0
        if (x+2,y) in need:
            aroundit.append("alist[x+1][y],x=(0,x+2)")
    except:
        while False:
            print()
    try:
        alist[x][y+2]=0
        if (x,y+2) in need:
            aroundit.append("alist[x][y+1],y=(0,y+2)")
    except:
        while False:
            print()
    try:
        if y-2<0:
            print(1+"1")
        alist[x][y-2]=0
        if (x,y-2) in need:
            aroundit.append("alist[x][y-1],y=(0,y-2)")
    except:
        while False:
            print()
    if len(aroundit)>0:
        listing.append((x,y))
        exec(random.choice(aroundit))
        need.remove((x, y))
    else:
        x,y=listing[-1]
        listing.pop()
x2=0
y2=1
listing2=[]
while not(alist[-1][-2]==2):
    alist[x2][y2]=3
    around2=[]
    try:
        if x2-1<0:
            print(1+"1")

        if alist[x2-1][y2]==0:
            around2.append("x2=x2-1")
    except:
        while False:
            print()
    try:

        if alist[x2+1][y2]==0:
            around2.append("x2=x2+1")
    except:
        while False:
            print()
    try:

        if alist[x2][y2+1]==0:
            around2.append("y2=y2+1")
    except:
        while False:
            print()
    try:
        if y2-1<0:
            print(1+"1")
        if alist[x2][y2-1]==0:
            around2.append("y2=y2-1")
    except:
        while False:
            print()
    if len(around2)>0:
        listing2.append((x2,y2))
        exec(random.choice(around2))
    else:
        alist[x2][y2]=2
        x2,y2=listing2[-1]
        listing2.pop()
alist[-1][-2]=3
for i in range(len(alist)):
    for j in range(len(alist[0])):
        if alist[i][j]==2:
            alist[i][j]=0
print("完成!用時(shí){}秒".format(time.time()-e))
if saveit=="1":
    ccc = askdirectory()
    h=""
    bbbbb=1
    while True:
        try:
            open("{}/{}×{}迷宮{}.png".format(ccc,a,b,h),"r")
            open("{}/{}×{}迷宮(正確線路){}.png".format(ccc,a,b,h),"r")
            h="({})".format(bbbbb)
        except:
            break
        bbbbb+=1
pygame.init()
icon=pygame.image.load("迷宮.png")
pygame.display.set_icon(icon)
screen=pygame.display.Info()
screen = pygame.display.set_mode((l*(2*a+1),l*(2*b+1)))
pygame.display.set_caption('迷宮')
screen.fill("white")
if saveit=="1":
    c = pygame.Surface((l, l), flags=pygame.HWSURFACE)
    c.fill(color='white')
    d = pygame.Surface((l, l), flags=pygame.HWSURFACE)
    d.fill(color='black')
    f = pygame.Surface((l, l), flags=pygame.HWSURFACE)
    f.fill(color='white')
    for i in range(2 * a + 1):
        for j in range(2 * b + 1):
            if alist[i][j] == 0:
                screen.blit(c, (i * l, j * l))
            elif alist[i][j] == 1:
                screen.blit(d, (i * l, j * l))
            else:
                screen.blit(f, (i * l, j * l))
    pygame.image.save(screen, "{}/{}×{}迷宮{}.png".format(ccc, a, b, h))
    c = pygame.Surface((l, l), flags=pygame.HWSURFACE)
    c.fill(color='white')
    d = pygame.Surface((l, l), flags=pygame.HWSURFACE)
    d.fill(color='black')
    f = pygame.Surface((l, l), flags=pygame.HWSURFACE)
    f.fill(color='red')
    for i in range(2 * a + 1):
        for j in range(2 * b + 1):
            if alist[i][j] == 0:
                screen.blit(c, (i * l, j * l))
            elif alist[i][j] == 1:
                screen.blit(d, (i * l, j * l))
            else:
                screen.blit(f, (i * l, j * l))
    pygame.image.save(screen, "{}/{}×{}迷宮(正確線路){}.png".format(ccc, a, b, h))
c = pygame.Surface((l, l), flags=pygame.HWSURFACE)
c.fill(color='white')
d = pygame.Surface((l, l), flags=pygame.HWSURFACE)
d.fill(color='black')
f = pygame.Surface((l, l), flags=pygame.HWSURFACE)
f.fill(color='white')
for i in range(2*a+1):
    for j in range(2*b+1):
        if alist[i][j]==0:
            screen.blit(c, (i*l, j*l))
        elif alist[i][j]==1:
            screen.blit(d, (i*l, j*l))
        else:
            screen.blit(f,(i*l, j*l))
pygame.display.flip()
aaaaaaa = 0
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        if event.type == pygame.MOUSEBUTTONDOWN:
            if aaaaaaa == 1:
                aaaaaaa = 0
                c = pygame.Surface((l, l), flags=pygame.HWSURFACE)
                c.fill(color='white')
                d = pygame.Surface((l, l), flags=pygame.HWSURFACE)
                d.fill(color='black')
                f = pygame.Surface((l, l), flags=pygame.HWSURFACE)
                f.fill(color='white')
                for i in range(2 * a + 1):
                    for j in range(2 * b + 1):
                        if alist[i][j] == 0:
                            screen.blit(c, (i * l, j * l))
                        elif alist[i][j] == 1:
                            screen.blit(d, (i * l, j * l))
                        else:
                            screen.blit(f, (i * l, j * l))
                pygame.display.flip()
            else:
                aaaaaaa = 1
                c = pygame.Surface((l, l), flags=pygame.HWSURFACE)
                c.fill(color='white')
                d = pygame.Surface((l, l), flags=pygame.HWSURFACE)
                d.fill(color='black')
                f = pygame.Surface((l, l), flags=pygame.HWSURFACE)
                f.fill(color='red')
                for i in range(2 * a + 1):
                    for j in range(2 * b + 1):
                        if alist[i][j] == 0:
                            screen.blit(c, (i * l, j * l))
                        elif alist[i][j] == 1:
                            screen.blit(d, (i * l, j * l))
                        else:
                            screen.blit(f, (i * l, j * l))
                pygame.display.flip()

代碼的結(jié)束,對(duì)于程序也許僅僅只是開(kāi)始;學(xué)習(xí)的暫時(shí)告一段落,從不影響生活的繼續(xù)。生命無(wú)止境,貴在一顆永遠(yuǎn)向上的心。

到此這篇關(guān)于Python迷宮生成器的文章就介紹到這了,更多相關(guān)Python迷宮生成器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python詞云展示庫(kù)wordcloud配置詳解

    Python詞云展示庫(kù)wordcloud配置詳解

    這篇文章主要介紹了Python詞云展示庫(kù)wordcloud配置詳解,詞云就是將詞語(yǔ)通過(guò)圖形可視化的方式,直觀和藝術(shù)的展示出來(lái),詞云在我們的生活中經(jīng)常能夠看到,無(wú)論是中文的詞云還是英文的詞云,需要的朋友可以參考下
    2023-07-07
  • python實(shí)現(xiàn)凱撒密碼加密解密的示例代碼

    python實(shí)現(xiàn)凱撒密碼加密解密的示例代碼

    本文主要介紹了python實(shí)現(xiàn)凱撒密碼加密解密的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Python shelve模塊實(shí)現(xiàn)解析

    Python shelve模塊實(shí)現(xiàn)解析

    這篇文章主要介紹了Python shelve模塊實(shí)現(xiàn)解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python讀取word文本操作詳解

    Python讀取word文本操作詳解

    這篇文章主要介紹了Python讀取word文本操作詳解,介紹了涉及到的模塊,相關(guān)概念,模塊的安裝等內(nèi)容,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • 畫(huà)pytorch模型圖,以及參數(shù)計(jì)算的方法

    畫(huà)pytorch模型圖,以及參數(shù)計(jì)算的方法

    今天小編就為大家分享一篇畫(huà)pytorch模型圖,以及參數(shù)計(jì)算的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • Python實(shí)現(xiàn)敲擊木魚(yú)積累功德小項(xiàng)目

    Python實(shí)現(xiàn)敲擊木魚(yú)積累功德小項(xiàng)目

    最近大家都很流行用手機(jī)敲擊電子木魚(yú)積累功德,這在很多短視頻中也常常見(jiàn)到。本文將用Python實(shí)現(xiàn)這一效果,感興趣的小伙伴可以了解一下
    2022-11-11
  • Python socket連接中的粘包、精確傳輸問(wèn)題實(shí)例分析

    Python socket連接中的粘包、精確傳輸問(wèn)題實(shí)例分析

    這篇文章主要介紹了Python socket連接中的粘包、精確傳輸問(wèn)題,結(jié)合實(shí)例形式分析了Python socket連接中的粘包、精確傳輸相關(guān)問(wèn)題原因、解決方案與操作注意事項(xiàng),需要的朋友可以參考下
    2020-03-03
  • Python3+RIDE+RobotFramework自動(dòng)化測(cè)試框架搭建過(guò)程詳解

    Python3+RIDE+RobotFramework自動(dòng)化測(cè)試框架搭建過(guò)程詳解

    這篇文章主要介紹了Python3+RIDE+RobotFramework自動(dòng)化測(cè)試框架搭建過(guò)程詳解,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • python3圖片轉(zhuǎn)換二進(jìn)制存入mysql

    python3圖片轉(zhuǎn)換二進(jìn)制存入mysql

    MYSQL是支持把圖片存入數(shù)據(jù)庫(kù)的,也相應(yīng)的有一個(gè)專門的字段BLOB (Binary Large Object),即較大的二進(jìn)制對(duì)象字段,看下面代碼
    2013-12-12
  • Python簡(jiǎn)單實(shí)現(xiàn)詞云圖代碼及步驟解析

    Python簡(jiǎn)單實(shí)現(xiàn)詞云圖代碼及步驟解析

    這篇文章主要介紹了Python簡(jiǎn)單實(shí)現(xiàn)詞云圖代碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06

最新評(píng)論