標籤:

python里函數作為返回值如何進行比較?

def qipai(theplayer):

print 棄掉的牌:,liangpai(theplayer[sp]),paixing[theplayer[paiscore][0]]

print

theplayer[in_game]=0

game_status[qipai]+=1

if theplayer[mingpai]==0:

game_status[aner]-=1

else:

for gi,gk in enumerate(ming_players):

if gk[xuhao]==theplayer[xuhao]:

del ming_players[gi]

game_status[minger]-=1

if game_status[aner]+game_status[minger]==1:

for gi,gk in enumerate(player_status):

if gk[in_game]==1:

player_status[gi]=win_decide(player_status[gi])

return theplayer

def dqipai(f):

def new_f(theplayer):

print 玩家%s:%s經過仔細思考,決定棄牌!%(theplayer[xuhao],theplayer[name])

return f(theplayer)

return new_f

然後在上一級的函數中,定義了一個列表,其中有dqipai(qipai),大致為choose=[bet,kaipai,dqipai(qipai)]

然後在用一個函數來調用dqipai來進行判斷,卻出錯,代碼如下:

def ming_choose(choose,theplayer):

if i&>0:(這裡是一個判斷條件,與高階函數無關)

the_choose=dqipai(qipai)

while the_choose==dqipai(qipai):

the_choose=choose[random.randint(0,len(choose)-1)]

然而測試結果顯示,雖然在 the_choose=dqipai(qipai)執行後,print the_choose,顯示的就是new_f(也就是dqipai的返回值),但後面的while語句並不觸發。

請高手幫忙看看,問題出在哪裡,並講解下導致這裡犯錯的知識點是什麼,謝謝了!

(代碼行未嚴格縮進,請諒解)


遊標卡尺都拿出來了,你說沒有縮進?


Python 代碼不加縮進不可以被諒解。


題主在題目下的評論好橫啊~根本不是一個有誠意的提問態度嘛~

武藏和小次郎都知道,既然你誠心誠意的發問我才會大發慈悲的告訴你!

這是看不懂的問題嗎?大家都這麼忙誰有空幫你調試代碼的時候還自己去縮進啊!根本連代碼是什麼都懶得看了好伐!

題主問知乎程序員們寫過程序嗎!我倒想問問題主學過Python嗎?

《送東陽馬生序》里有一句「俟其欣悅,則又請焉」,這才是提問的正確態度吧?

在知乎提問你不交錢我不收費,大家互相平等,只不過都在討論格式問題就換來題主一頓冷嘲熱諷這算個什麼?


手機黨表示無能為力


推薦閱讀:

Python有哪些黑魔法?
MongoDB及可視化工具的安裝
中科大 Freeshell 上面有哪些好玩或者實用的應用?

TAG:Python |