質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

46130閲覧

(教えて下さい)Type errorを解決出来ません。

YuheiFujioka

総合スコア17

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2016/07/02 17:24

編集2016/07/03 02:49

BlackJack().Me(Point(100),Hit(10))を実行させると以下のType errorが発生し、対処できません。原因を教えて頂けますと幸いです。

TypeError: init() missing 1 required positional argument: 'deck'

Blackjack(object): def __init__(self, poket, bet,deck = [] ): self.poket = poket self.bet = bet self.deck = deck (中略:class全体は本コードの下に記しています) #####ディーラーの行動 def Dealer(self,Point,Hit,deck): def d_Hit_or_stand(self, Point, Hit,deck): if Point <=16: self.deck.append(Hit) else: pass return self.deck

class Blackjack全体

class Blackjack(object): def __init__(self, poket, bet,deck = [] ): self.poket = poket self.bet = bet self.deck = deck def Deck(self): for i in range(2): (self.deck).append(random.randint(1,13)) return self.deck def Hit(self):##カードを引く return random.randint(1,13) def Point(self):##手持ちカードの合計を返す s = 0 sorted((self.deck), reverse = True) for i in range(len(self.deck)): if self.deck[i] == 11 or self.deck[i] == 12 or self.deck[i] == 13: s += 10 elif self.deck[i] == 1: s += 11 if s >= 21: s -=10 else: s += self.deck[i] return s #####ディーラーの行動 def Dealer(self,Point,Hit,deck): def d_Hit_or_stand(self, Point, Hit,deck): if Point <=16: self.deck.append(Hit) else: pass return self.deck ###自身の行動 def Me(self,Point,Hit,deck): def Me_Hit_or_stand(self,Point,Hit,deck): print("Now My sum of cards are "+ s + "Decide Hit(h) or Stand(s)") if raw_input("h"): (self.deck).append(Hit(self)) else: pass ##勝敗判定と精算 def Judge_and_amount(Me,Dealer): if (Me.sum >Dealer.sum) and Me.sum <= 21: print ("I win") poket += 10 if (Me.sum <Dealer.sum) and Dealer.sum <= 21: print ("I lose") poket -= 10 if Me.sum <= 21 and Dealer.sum > 21: print ("l win") poket += 10 if Dealer.sum <= 21 and Me.sum > 21: print("I lose") poket -= 10 else: print("draw") print(poket)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Blackjack(object): def __init__(self, poket, bet,deck = [] ):

としているので、
BlackJack() という呼び出しでは、パラメータが足りません。
少なくとも poket, bet の 2 つを指定する必要があります。
deck は 指定省略が可能です。 pocket と bet は省略できません。

投稿2016/07/02 23:34

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YuheiFujioka

2016/07/03 02:47

ご回答ありがとうございます。 すみません。記載に誤りがありました。 誤:BlackJack().Me(Point(),Hit())で実行すると… 正:BlackJack().Me(Point(100),Hit(10))で実行すると…
YuheiFujioka

2016/07/09 06:04

ありがとうございます。解決いたしました。
guest

0

katoyさんの回答は、誤記とは関係なく正答のように見えます。

BlackJackクラスのインスタンスを作るには、__init__で定義しているとおり、引数が2つ必須です。
つまり、BlackJack(100, 10)のようにしなければなりません。

少なくとも、このコードをPython3(v3.5.1)で動かした場合、
TypeError: init() missing 1 required positional argument: 'deck'にはならないと思います。
TypeError: __init__() missing 2 required positional arguments: 'poket' and 'bet'になるはずです。

投稿2016/07/07 06:58

argius

総合スコア9388

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YuheiFujioka

2016/07/09 06:05

ご助言ありがとうございます。仰る通りでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問