Python 如何用python編寫無限猴子定理

2021-10-13 08:47:44 字數 2185 閱讀 1227

《python資料結構與演算法》一書中有無限猴子定理一題,問題如下:

蒐集網上**,除錯如下:

import random

num =

1000

char_list =

[chr

(c+ord

('a'))

for c in

range(26

)]# 返回c+ord('a')對應的ascii碼,a~z

' ')

# 新增空格 該列表內的字元一共有27個

target_list =

'hwnzy is a handsome boy'

#生成指定長度的隨機字串

deffun1()

: temp_list =

for index in

range(27

):0,

26)])

# temp_list.insert(index, char_list[random.randint(0, 26)])

return

''.join(temp_list)

# 將temp_list 內的元素以指定的字元(分隔符)連線,這裡為空,不是空格

# 將隨機生成的字串與目標字串進行比較,給出相似度

deffun2

(temp_list)

: score =

0for index in

range

(len

(target_list)):

if target_list[index]

== temp_list[index]

: score +=

1return score

#重複多次給出相似度最高的字串

deffun3

(times)

: best_score =

0 best_time =

0 best_list =

for index in

range

(times)

: temp_list = fun1(

) score = fun2(temp_list)

if score > best_score:

best_score = score

best_time = index

best_list = temp_list

print

('%dth similarity is %.3f'

%(index+

1, score/

len(target_list)))

print

("the best similarity is %dth %.3f"

%(best_time, best_score/

len(target_list)))

print

(best_list)

if __name__ ==

'__main__'

:# 當.py檔案被直接執行時,if __name__ == '__main__'之下的**塊將被執行;

# 當.py檔案以模組形式被匯入時,if __name__ == '__main__'之下的**塊不被執行。

fun3(num)

執行結果:

# 省略前邊1-992的結果

993th similarity is

0.000

994th similarity is

0.087

995th similarity is

0.087

996th similarity is

0.043

997th similarity is

0.000

998th similarity is

0.000

999th similarity is

0.000

1000th similarity is

0.043

the best similarity is 46th 0.174

python開啟檔案 如何用Python讀寫檔案

前面我們已經介紹了很多python相關的基礎知識,大家是不是對python已經有了進一步認識了呢?作為人工智慧時代的熱門程式語言,開始接觸並學習python的孩子越來越多,家長們都不想讓自己的孩子落於人後,近期前來找陳老師諮詢相關課程的人不少。今天和大家說說如何用python操作乙個檔案的內容,一起...

python拆分 如何用Python進行片語拆分?

可以先split 做好特殊字元標記,儲存到臨時變數裡面,比如,元組,陣列,或者字典之類的 再遍歷上面的變數,拆分括號,用乙個特殊標記,標記括號裡面的內容,總之找到區分括號和非括號內容就可以,之後儲存到變數 最後遍歷第二個變數,生成句型 抱歉最近精神狀態不太好,又比較忙,今天大概寫了下,應該沒有啥問題...

python實現多型 如何用python實現多型性

建立乙個名為 func 的函式,它將獲取乙個我們將其命名為 obj 的物件。雖然我們使用的名稱是 obj 但是任何例項化的物件都可以被呼叫到這個函式中。用函式實現多型性 class india def capital self print new delhi is the capital of in...