第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

站著選擇什么都不做

站著選擇什么都不做

寶慕林4294392 2021-11-23 20:08:53
所以我試圖在 python 3 中制作一個(gè)簡(jiǎn)單的二十一點(diǎn)游戲,一切都很好,除了我受不了。如果我輸入 2 它不會(huì)做任何事情。提前致謝。編輯 1:擊球效果很好。編輯 2:發(fā)布整個(gè)腳本,以便您可以重現(xiàn)我面臨的問題,正如@roganjosh 建議的那樣。from random import shuffleimport sysdef deal(deck, player, dealer):    shuffle(deck)    for _ in range(2):        player.append(deck.pop())        dealer.append(deck.pop())def score(hand):    non_aces = [c for c in hand if c != 'A']    aces = [c for c in hand if c == 'A']    sum = 0    for card in non_aces:        if card in 'JQK':            sum += 10        else:            sum += int(card)    for card in aces:        if sum <= 10:            sum += 11        else:            sum += 1    return sumdef display_info(player, dealer, stand):    print("Your cards: [{}] ({})".format(']['.join(player), score(player)))    if stand:        print("Dealer cards: [{}] ({})".format(']['.join(dealer), score(dealer)))    else:        print("Dealer cards: [{}] [?]".format(dealer[0]))def results(player, dealer, hand, stand):    if score(player) == 21 and hand:        print("Blackjack! You won!")            sys.exit()        elif score(player) > 21:        print("Busted. You lost!")           sys.exit()         if stand:        if score(dealer) > 21:            print("Dealer busted. You won!")        elif score(player) > score(dealer):            print("You beat the dealer! You won!")        elif score(player) < score(dealer):            print("You lost!")        else:            print("Push. Nobody wins or losses.")        sys.exit()def hit_stand(deck, player, dealer, hand, stand):    print("What would you like to do")    print("[1] - Hit\n[2] - Stand")    choice = input("> ")    hand = False    if choice == '1':        player.append(deck.pop())    elif choice == '2':        stand = True        while score(dealer) <= 16:            dealer.append(deck.pop())
查看完整描述

2 回答

?
不負(fù)相思意

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊

您不是在玩家選擇站立后檢查結(jié)果。由于您只deal()在while True循環(huán)之前一次,如果您選擇重復(fù)站立,您只會(huì)得到無限條件。莊家抽完所有牌后計(jì)算分?jǐn)?shù)。


def hit_stand(deck, player, dealer, hand, stand):

    print("What would you like to do")

    print("[1] - Hit\n[2] - Stand")

    choice = input("> ")

    hand = False

    if choice == '1':

        player.append(deck.pop())

    elif choice == '2':

        stand = True

        while score(dealer) <= 16:

            print(score(dealer))

            dealer.append(deck.pop())

        display_info(player, dealer, stand)

        results(player, dealer, first_hand, stand) # HERE

順便說一句,在確定最終得分后退出游戲并不是很優(yōu)雅。你會(huì)想看看比一個(gè)更好的結(jié)構(gòu)while True:,并sys.exit()以控制流,但是這是你的一個(gè)鍛煉。


最后,您不應(yīng)該sum在內(nèi)部用作變量名,score()因?yàn)檫@是您正在重新定義的內(nèi)置函數(shù)。使用類似的東西,total這樣你就不會(huì)冒著掩蓋內(nèi)置函數(shù)本身的風(fēng)險(xiǎn)。


查看完整回答
反對(duì) 回復(fù) 2021-11-23
?
幕布斯7119047

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊

我想添加另一個(gè)注釋,因?yàn)槲艺J(rèn)為這是關(guān)于 Python 如何工作的一個(gè)非常重要的點(diǎn)。這是具有 C/C++/Java 背景的人(即我們幾乎所有人)在使用 Python 時(shí)需要取消學(xué)習(xí)的東西。

正如我在上面的評(píng)論中所述,在 Maria Laura 的原始代碼中,似乎調(diào)用hit_stand是打算使用某些變量(例如stand)作為輸出變量,而在 Python 中,我們不能在函數(shù)調(diào)用中使用“輸出變量” . 但是 Maria Laura 提到“命中效果很好”,這意味著參數(shù)player正在被修改。那么,如果我們不能有“輸出變量”,那么為什么player函數(shù)修改了值hit_stand?

當(dāng)代碼調(diào)用 時(shí)hit_stand,會(huì)向函數(shù)傳遞五個(gè)對(duì)象:

  • 一個(gè)名為 的列表對(duì)象deck

  • 一個(gè)名為 的列表對(duì)象player,

  • 一個(gè)名為 的列表對(duì)象dealer,

  • 一個(gè)布爾對(duì)象,命名為hand,

  • 一個(gè)布爾對(duì)象,命名為 stand

此函數(shù)外的代碼也有(deck, player, dealer, first_hand, standing)指向這五個(gè)相同對(duì)象的名稱。內(nèi)的代碼hit_stand.append()方法,呼吁playerdealer列表對(duì)象和.pop()方法被稱為上deck對(duì)象,所以所有的對(duì)象都發(fā)生突變。來自調(diào)用范圍的名稱仍然指向那些相同的對(duì)象,因此這些名稱現(xiàn)在將看到這些更改。

這個(gè)故事的handstand是不同的。在hit_stand函數(shù)內(nèi)部,handstand使用=運(yùn)算符分配新值。正如Fredrik Lundh 的這篇優(yōu)秀文章所述=,Python 中的運(yùn)算符不會(huì)“更改”變量,它只需要一個(gè)對(duì)象并將其綁定到一個(gè)名稱。 對(duì)象本身沒有改變,而是被新的布爾對(duì)象替換了。所以standing外部作用域中的變量仍然指向它原來的布爾對(duì)象,而stand函數(shù)內(nèi)部的變量指向的是一個(gè)全新的布爾對(duì)象,與外部作用域中的不同。沒有什么我們可以做的變量handstand 這將在外部范圍內(nèi)看到,不能像我們?cè)谄渌Z言中那樣存在“通過引用傳遞”或“輸出參數(shù)”之類的東西。

這是一個(gè)起初看起來很陌生的概念,直到我們忘記在 C/C++/Java 教育中學(xué)到的東西。


查看完整回答
反對(duì) 回復(fù) 2021-11-23
  • 2 回答
  • 0 關(guān)注
  • 220 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)