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

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

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

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

Q&A

解決済

1回答

9592閲覧

【Python3】エラー結果:Traceback (most recent call last)

1004

総合スコア74

Python 3.x

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

0グッド

0クリップ

投稿2017/03/02 06:29

python3の勉強中(写経中)にエラーが発生し、先に進めなくなってしまいました。下記、原因箇所を追ってみましたが、バグ解消には至りませんでした。解消方法がありましたら、ご教示願います。

【コマンドプロンプト出力結果】
イメージ説明

下記、コードになります。

import random

RANK,SUIT = 0,1

def get_point(hand):
result = 0
ace_flag = False
for card in hand:
if card[RANK] == 1:
ace_flag = True
if card[RANK] > 10:
num = 10
else:
num = card[RANK]
result = result + num
if ace_flag and result <= 11:
result += 10
return result

#print_player_hand関数
def print_player_hand(player_hand):
print("プレイヤー(",get_point(player_hand),");")
for card in player_hand:
print("[",card[SUIT],card[RANK],"]")
print()

#print_dealer_hand関数
def print_dealer_hand(dealer_hand,uncovered):
if uncovered:
print("ディーラー(",get_point(dealer_hand),"):")
else:
print("ディーラー(??):")
flag = True
for card in dealer_hand:
if flag or uncovered:
print("[",card[SUIT],card[RANK],"]")
flag = False
else:
print("[ * * ]")
print()

def make_deck():
#スート(記号)の定義
suits = ["S","H","D","C"]
#ランク(数字)の定義
ranks = range(1,14)
deck = [(x,y) for x in ranks for y in suits]
#シャッフルする
random.shuffle(deck)
return deck

def main():
turn = 1
player_money = 100
while player_money > 0:
deck = make_deck()
#print(deck)
print("ターン:",turn)
print("所持金:",player_money)
#プレイヤーの手札を格納するリスト
player_hand = []
#ディーラーの手札を格納するリスト
dealer_hand = []
#デッキの作成
deck = make_deck()
#print(deck)
#お互いに2枚ずつ引く
for i in range(2):
#デッキからプレイヤーの手札へ
player_hand.append(deck.pop())
#デッキからディーラーの手札へ
dealer_hand.append(deck.pop())
#プレイヤーの手札を表示
#print(player_hand)
print_player_hand(player_hand)
#プレイヤーの手札の合計を表示
#print(get_point(player_hand))
#ディーラーの手札を表示
#print(dealer_hand)
print_dealer_hand(dealer_hand,False)
#ディーラーの手札の合計を表示
#print(get_point(dealer_hand))

#プレイヤーターン while True: op = input("スタンド:1,ヒット:2,ダブル:3 >") if op == "1": print("[プレイヤー:スタンド]") break elif op == "2": print("[プレイヤー:ヒット]") player_hand.append(deck().pop)

#↓↓↓この部分がエラーの原因だと思われます。
print_player_hand(player_hand)
#↑↑↑この部分がエラーの原因だと思われます。
elif op == "3":
print("[プレイヤー:ダブル]")
#ここにダブルの処理
else:
continue

turn += 1 input("次のターンへ") print("ゲームオーバー")

if name == "main":
main()

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

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

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

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

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

guest

回答1

0

ベストアンサー

()の位置がおかしいです。

Python

1#player_hand.append(deck().pop)# ()の位置がおかしい 2player_hand.append(deck.pop()) # これを意図?

投稿2017/03/02 06:36

can110

総合スコア38260

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

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

1004

2017/03/02 06:39

初歩的なミス。。。 とても簡単な所で詰まっていたということですね。 ご回答、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問