Python列表传递

2024-10-04 01:25:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python创建一个black-jack游戏。关于局部变量,传递,返回,我做了很多阅读,但是我很困惑,为什么main()函数中的print语句的工作方式如下,但是当我将它改为

print "The playerCards are: ", returned_playerCards

如果我在其他函数中“命中”另一张卡,它将打印“无”。 玩家名单是全球性的吗?当我调用playerDecision函数,然后调用playerHit函数,然后调用playerDecision函数时会发生什么。把这些都打出来让我觉得这样做是不对的。不然我怎么做

from random import randint
import time
A = 11
J = 10
Q = 10
K = 10
cards = [A,2,3,4,5,6,7,8,9,10,J,Q,K]

def deal():     
    #playerCards = [cards[randint(0,len(cards)-1)],cards[randint(0,len(cards)-1)]]
    playerCards = [2,3]
    dealerCards = [cards[randint(0,len(cards)-1)],cards[randint(0,len(cards)-1)]]
    print "You have been dealt a ", playerCards[0], "and a ", playerCards[1]
    time.sleep(1.5)
    print "Dealer is showing ", dealerCards[0]
    time.sleep(1)
    return(playerCards, dealerCards)


def playerDecision(playerCards):
    stayhit = raw_input("Would you like to 'stay' or 'hit' >> ")
    if stayhit == 'hit':
        playerCards = playerHit(playerCards)
    elif stayhit == 'stay':
        print "playerCards in elif of playerDecision ", playerCards
        return(playerCards)
    return(playerCards)

def playerHit(playerCards):
    playerCards.insert(0, cards[randint(0,len(cards)-1)])
    print "You were dealt a  ", playerCards[0]
    time.sleep(1.5)
    print "Your current total is ", sum(playerCards)
    time.sleep(1.5)
    if sum(playerCards) > 21:
        return(playerCards)
    else:
        print "PlayerCards in else of playerHit are ", playerCards
        playerDecision(playerCards)

def main():
    playerCards, dealerCards = deal()
    returned_playerCards = playerDecision(playerCards)      
    print "The player cards are:  ", playerCards

if __name__ == "__main__":
    main()

Tags: 函数lenreturntimemaindefsleepare
1条回答
网友
1楼 · 发布于 2024-10-04 01:25:24

猜猜看,你在哪儿

    else:
        print "PlayerCards in else of playerHit are ", playerCards
        playerDecision(playerCards)

你需要一个return

    else:
        print "PlayerCards in else of playerHit are ", playerCards
        return playerDecision(playerCards)

否则函数结束时没有return语句,这相当于return None

相关问题 更多 >