日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python阴阳师_如何用Python找到阴阳师妖怪屋的最佳探索队伍!强不强?

發(fā)布時間:2025/3/12 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python阴阳师_如何用Python找到阴阳师妖怪屋的最佳探索队伍!强不强? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

程序由來

最初想要寫這個小程序是因為,9月份那段時間我在玩妖怪屋。

因為剛開始抽卡,要啥啥沒有,所以探索隊伍也只是放了幾個自己記得有關聯(lián)的式神。

在網(wǎng)上有找到完整版的羈絆,但是怎么根據(jù)羈絆找到最佳的式神組合就成問題了。

當時我是通過手動算出來的結果,后來想到自己剛剛把python基礎啃完,也許可以試試用python來實現(xiàn)。

萬一后續(xù)改進的不錯能放上簡歷呢?

于是就有了這個程序。

整體思路

獲取使用者的式神錄

找到可以組成的羈絆

組合上述的羈絆

根據(jù)條件(8人,buff最大)找到最優(yōu)解

當時的想法:

一是羈絆是游戲中設定好的??梢酝ㄟ^先對各個羈絆的屬性進行定義,然后確認是否有羈絆中的式神存在于使用者式神錄中。

二是把各個羈絆組合的人數(shù)和增強buff算出來,然后排除不符合要求的情況。

編寫過程

先按照思路把整個程序寫出來,然后不斷的把一些內容改成函數(shù),把一些輸出不規(guī)范會導致的錯誤一一解決,接著閱讀整個程序的代碼,并對注釋進行改寫。

今天比較倉促,詳細的過程不知道后續(xù)有沒有機會補上,請讓我先放上完整代碼。

寫程序的過程中,我還在論壇里找了很多方法用在程序里,以保證程序是按照我的思路實現(xiàn)的。

包括通過集合去重,確認A是否屬于B,通過combinations對羈絆進行組合,以及通過re替換非中文字等等。

在此謝謝各位大佬的奉獻。

完整代碼

onmyoji(主程序)

"""

本項目是基于陰陽師妖怪屋的探索玩法編寫的。

目的是讓使用者能夠快速根據(jù)擁有的式神,組合出能讓增強buff最大化的8人組合。

探索玩法可派遣8位式神進行不斷探索。

不同式神可組成不同羈絆,羈絆在游戲中是固定的,式神組成羈絆可獲得增強buff,即額外探索獎勵。

本項目使用方法,只需規(guī)范輸入內容,并進行分隔,在完成輸入后以N或n結尾即可。

該項目結果只會出現(xiàn)第一個增強buff最大的組合,請知悉。

本項目計算過程:

1.獲取使用者的式神錄,進行處理后獲得單個式神的集合,保存至使用者變量type中。

2.根據(jù)這些式神從式神字典中找到可以組成的羈絆,保存其在字典中位置至使用者變量loc中。

3.將不同羈絆可組成的組合(后續(xù)稱為羈絆組合),占用人數(shù),增強buff放在一個字典中,保存至使用者變量total中。

4.對total中每個可組成羈絆組合,進行對比,占用人數(shù)合規(guī)(8位),且增強等級最大的組合保存至best中,并輸出。

"""

import function as fu

import dictionary as dic

import shiki as sk

#將我擁有的式神設為一個空的集合,方便后續(xù)添加式神

shiki_you = sk.Shiki(set(()))

#建立一個集合包括所有羈絆組合的式神

"""

白狼,茨木童子,大天狗,獨眼小僧,鬼使白,鬼使黑,蝴蝶精,九命貓,酒吞童子,傀儡師,

鐮鼬,孟婆,犬神,山兔,少羽大天狗,桃花妖,天邪鬼赤,天邪鬼黃,天邪鬼綠,天邪鬼青,鐵鼠,

巫蠱師,雪女,閻魔,妖刀姬,櫻花妖,螢草

"""

shiki_all = dic.shiki_all

#通過使用者錄入,獲取使用者的式神錄

while True:

#獲取使用者輸入的式神

#輸入中如果有漢字或N,n以外的字符,都replace為,號,并進行分隔。當輸入為N或n時,結束輸入。

shiki = input('Would you like to tell me your shiki name? please use \',\' to split.')

#對輸入內容進行處理,判斷input的內容是不是為N或n,即對方有否完成輸入過程。N為完成輸入。

if fu.check_go_on(shiki):

break

#對輸入內容進行處理,保證輸入內容合規(guī)后,更新至使用者的式神錄

fu.input_shiki(shiki, shiki_you)

#通過計算獲得可組成的最大增強buff的羈絆組合

#可以更改組隊人數(shù)設定限制,即將fu.get_max_buff(shiki_you)的默認參數(shù)n進行改動

fu.get_max_buff(shiki_you)

shiki

from itertools import combinations

class Shiki():

#type是指擁有的式神,loc是指羈絆在diction2的位置,包括0,

#comb是指各羈絆能組合成的組合,使用loc來表示羈絆所處位置

#total是集合了羈絆組合,組合占用人數(shù)和增強buff的字典

def __init__(self,type):

self.type = type

self.loc = []

self.total = {}

self.best_max = 0

self.best = {}

#獲取所有羈絆可以組成的組合,請注意當i=1時,羈絆可組成的組合只有一個

#而元組中只包含一個元素時,需要在元素后面添加逗號,否則括號會被當作運算符使用

def combine(self):

'''根據(jù)n獲得列表中的所有可能組合(n個元素為一組)'''

temp_list2 = []

end_list = []

for i in range(len(self.loc)):

for c in combinations(self.loc,i):

temp_list2.append(c)

#print(i,c,len(c))

temp_list2.append(tuple(self.loc))

#temp_list2 = sorted(list(set(temp_list2)))

return temp_list2

dictionary

(不得不承認這個diction。。真的有點丑)

#diction是一個列表,把每一個羈絆的各屬性都單獨放在一個字典中

import shiki as sk

#將所有羈絆組合的屬性放入一個字典中,并將所有羈絆組合的字典放入一個列表中

"""

羈絆組合字典屬性說明

namet:羈絆簡稱

tram_per:羈絆所包含的式神

person:羈絆占用人數(shù)

level:羈絆獲得的buff值

name:羈絆名稱

"""

#diction是一個列表,把各屬性key和各羈絆的對應屬性值value放在一個字典中,其中value屬性值也是一個列表

diction = [

{'namet':['tram1','tram2','tram3','tram4','tram5','tram6','tram7''tram8',

'tram9','tram10','tram11','tram12','tram13','tram14','tram15','tram16']},

{'tram_per':[{'櫻花妖','桃花妖'},{'酒吞童子','茨木童子'},{'山兔','孟婆'},{'鬼使黑','鬼使白'},

{'鐮鼬','鐵鼠'},{'少羽大天狗','大天狗'},{'鬼使黑','鬼使白','閻魔'},{'白狼','妖刀姬','螢草'},

{'白狼','妖刀姬'},{'傀儡師','閻魔'},{'獨眼小僧','蝴蝶精'},

{'天邪鬼黃','天邪鬼赤','天邪鬼青','天邪鬼綠'},{'大天狗','雪女'},{'螢草','白狼'},{'九命貓','犬神'},

{'蝴蝶精','巫蠱師'}]},

{'person':[2,2,2,2,2,2,3,3,2,2,2,4,2,2,2,2]},

{'level':[2,4,2,2,2,4,3,4,3,3,2,2,3,2,2,2]},

{'name':['whereisspring','drinkthewine','runningfrogandpan','whiteandblack','repeathappily','fromthesky',

'bosspleasesay','girlshouldbestrong','girlgroup','onedaytravelatthree','Icanchant','F4','FORjustice',

'myidol','catordog','monstercatchingbutterfly']}

]

shiki_all = sk.Shiki({'白狼','茨木童子','大天狗','獨眼小僧','鬼使白','鬼使黑','蝴蝶精','九命貓','酒吞童子','傀儡師',

'鐮鼬','孟婆','犬神','山兔','少羽大天狗','桃花妖','天邪鬼赤','天邪鬼黃','天邪鬼綠','天邪鬼青',

'鐵鼠','巫蠱師','雪女','閻魔','妖刀姬','櫻花妖','螢草'})

function

import dictionary as dic

import re

#判斷input的內容是不是為N或n,即對方不愿意繼續(xù)分享其擁有的式神名稱

def check_go_on(shiki):

Out = False

if shiki == 'N' or shiki == 'n':

Out = True

return Out

#對輸入內容進行處理,確認其符合要求

def check_list(shiki):

#將輸入內容中所有非中文部分都替換為','

mark = re.compile(r'[^\u4e00-\u9fa5]')

a = re.sub(mark, ',', shiki)

#根據(jù)分隔符',',對輸入內容進行分隔去重

shiki = list(set(a.split(',')))

#對輸入內容的每一個文字內容進行判定,確認其是否為式神錄中的式神名稱。

for a in shiki.copy():

#如是,繼續(xù)判斷下一個;

if {a}.issubset(dic.shiki_all.type):

continue

#如不是,刪掉該部分。

else:

shiki.remove(a)

#返回處理過的輸入內容,當前內容應不包含任何不存在于式神錄的文字及符號

return shiki

#

def input_shiki(shiki,shiki_you):

#將輸入的式神列表改為集合,方便進行判定和去重

shiki = {i for i in list(check_list(shiki))}

#將輸入的式神列表放入使用者的式神錄中

shiki_you.type.update(shiki)

return

#獲取使用者式神可組成的所有羈絆,并保存羈絆在字典中的位置至變量loc

def get_dic(shiki_you):

#確認使用者式神錄是否能夠組成diction中的羈絆

for i in dic.diction[1]['tram_per']:

#如果使用者式神錄存在可組成羈絆的式神,保存該羈絆在字典中的指針

#因為該指針可便于獲取該羈絆在diction其他字典中的對應值

if i.issubset(shiki_you.type):

shiki_you.loc.append(dic.diction[1]['tram_per'].index(i))

return shiki_you

#記錄羈絆組合的各項屬性值

def comp_buff_assign(shiki_you,type_shiki,buff,memberc):

shiki_you.total['pers'].append(len(type_shiki))

shiki_you.total['team'].append(type_shiki)

shiki_you.total['level'].append(buff)

shiki_you.total['usecomb'].append(memberc)

return

#對每個羈絆組合的占用人數(shù),增強buff等相關信息都進行獲取和錄入

def comp_buff(shiki_you,n):

#對于每一個羈絆組合都進行計算

for i in shiki_you.total['comb']:

buff = 0

type_shiki = set(())

memberc = []

#當羈絆的組合方式為空,可對各項屬性值進行初始定義

if len(i) == 0:

comp_buff_assign(shiki_you, type_shiki, buff, memberc)

continue

#每個羈絆組合進行x(擁有羈絆數(shù)量)次的重復,以計算每種羈絆組合的屬性

for x in range(len(i)):

# y用于獲取羈絆組合在diction中的所處位置

y = int(i[x])

# type_shiki用于獲取羈絆組合要占用的人數(shù),并自動去重

# memberc是獲取使用到的羈絆,buff為增強buff的數(shù)值

type_shiki.update(dic.diction[1]['tram_per'][y])

memberc.append(dic.diction[1]['tram_per'][y])

buff += dic.diction[3]['level'][y]

#記錄羈絆組合占用人數(shù)不大于設定的羈絆組合

if len(type_shiki) <= n:

comp_buff_assign(shiki_you, type_shiki, buff, memberc)

return shiki_you

#輸出可組成的增強buff最大的羈絆組合信息

def print_best(shiki_you,best):

print('\n根據(jù)您現(xiàn)有的式神,當前可獲得最大增強buff的羈絆組合信息如下:')

print('最大Buff值:', shiki_you.best_max)

print('組合占用人數(shù):', len(shiki_you.best))

print('使用到的羈絆:', shiki_you.total['usecomb'][best])

print('使用到的式神:',shiki_you.best)

print('\nBases on your shikis, we can provide below group details which can make you get maximum benefit:')

print('Buff Level:', shiki_you.best_max)

print('Number of Shiki:', len(shiki_you.best))

print('Combination Used:', shiki_you.total['usecomb'][best])

print('Shiki Used:',shiki_you.best)

# 對每個羈絆組合的增強buff進行比較,獲得buff最大值的羈絆組合,保存在使用者的變量best,best_max中

def compare_buff(shiki_you):

best=0

# 開始對每組的數(shù)據(jù)進行比較,先設定一個保存最大值的變量

shiki_you.best_max = shiki_you.total['level'][0]

# shiki_you.total = {羈絆組合'comb':shiki_you.comb,

# 占用人數(shù)'pers':[],'team':[],增強等級'level':[],'usecomb':[]}

for i in range(len(shiki_you.total['level'])):

if shiki_you.best_max < shiki_you.total['level'][i]:

shiki_you.best_max = shiki_you.total['level'][i]

shiki_you.best = shiki_you.total['team'][i]

best = i

print_best(shiki_you,best)

return shiki_you

#通過計算獲得可組成的最大增強buff的羈絆組合

def get_max_buff(shiki_you,n=8):

# 獲取使用者式神可組成的所有羈絆,并保存羈絆在字典中的位置至變量loc

get_dic(shiki_you)

# 將可組成的所有羈絆進行自由組合,并定義部分初始變量并保存相關信息在total字典中。

"""

comb保存自由組合成的羈絆組合(在字典中的位置)

pers保存每種羈絆組合的占用人數(shù)

team保存每種羈絆組合所使用到的式神

level保存每種羈絆組合可獲得的buff增強值

usecomb保存每種羈絆組合所使用到的羈絆

"""

shiki_you.total = {'comb': shiki_you.combine(), 'pers': [], 'team': [], 'level': [], 'usecomb': []}

# 對每個羈絆組合的占用人數(shù),增強buff等相關信息都進行獲取和錄入

comp_buff(shiki_you,n)

# 對每個羈絆組合的增強buff進行比較,獲得buff最大值的羈絆組合,輸出并保存在使用者的變量best,best_max中

compare_buff(shiki_you)

這個程序真的是改了又改,雖然不夠復雜,沒有好看的界面,甚至包含廢話。但是說不定下一個程序用途就更加廣泛了呢!

如果各位有改進方法或者好的教程,請拋給我!謝謝!

PS:如有需要Python學習資料的小伙伴可以加點擊下方鏈接自行獲取

總結

以上是生活随笔為你收集整理的python阴阳师_如何用Python找到阴阳师妖怪屋的最佳探索队伍!强不强?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。