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

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

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

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

Q&A

解決済

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

YuheiFujioka
YuheiFujioka

総合スコア17

Python 3.x

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

2回答

0グッド

0クリップ

43870閲覧

投稿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)

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

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

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

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答2

3

ベストアンサー

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

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

投稿2016/07/02 23:34

katoy

総合スコア22306

skyzeek, Riscait, qurupo75👍を押しています

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

YuheiFujioka

2016/07/03 02:47

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

2016/07/09 06:04

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

2

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

総合スコア9382

skyzeek, Riscait👍を押しています

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

YuheiFujioka

2016/07/09 06:05

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

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

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