現在、こちらの書籍でPythonを勉強します。
Pythonスタートブック-辻-真吾著(Amazonに飛びます)
(内容はPythonの初歩の初歩、といった感じです。)
困っていること
「多面体のサイコロをモデルにしたモジュールを作成する」という課題が書籍の中にあり、
以下の2つのモジュールを作成しました。
●dice.py●
html
1#dice.py 2#coding:shift-jis 3import random 4 5class Dice: 6 def __init__(self,val=6): 7 if val not in [4,6,8,12,20]: 8 raise Exception('そんな正多面体はありません。') 9 self.face_num = val 10 11 def shoot(self): 12 return random.randint(1,self.face_num)
●dice_game.py●
html
1#dice_game.py 2#coding:shift-jis 3import dice 4 5num = input('4,6,8,12,20のどれで勝負しますか?:') #input関数で値を受け取る 6 7my_dice = dice.Dice(num) #ユーザー用のサイコロ 8cpu_dice = dice.Dice(num) #コンピュータ用のサイコロ 9 10my_pip = my_dice.shoot() 11cpu_pip = cpu_dice.shoot() 12 13#出目を画面に出力 数字はstr関数を使って文字列に変更 14print('CPU:' + str(cpu_pip) + ' あなた:' + str(my_pip)) 15#状況によってメッセージを変える 16if my_pip > cpu_pip: 17 print('おめでとうございます。あなたの勝ちです!') 18elif my_pip < cpu_pip: 19 print('残念!あなたの負けです。') 20else: 21 print('引き分けです。') 22 23
dice_game.pyをターミナル(IDLE)で実行すると、
書籍の模範解答では例えば以下のように表示されると書かれていました。
html
1C:\Python34>python dice_game.py 24,6,8,12,20のどれで勝負しますか?:12 3CPU:6 あなた:12 4おめでとうございます。あなたの勝ちです!
ですが、実際は以下のように表示されます。
html
1C:\Python34>python dice_game.py 24,6,8,12,20のどれで勝負しますか?:4 3Traceback (most recent call last): 4 File "dice_game.py", line 6, in <module> 5 my_dice = dice.Dice(num) #ユーザー用のサイコロ 6 File "C:\Python34\dice.py", line 7, in __init__ 7 raise Exception('そんな正多面体はありません。') 8Exception: そんな正多面体はありません。
やってみたこと
dice_game.py「num」に何が入っているのかと思いPrint関数で表示させると、
きちんと入力した値が取り込めているようです。
html
1C:\Python34>python dice_game.py 24,6,8,12,20のどれで勝負しますか?:4 34 <-ここの部分はPrint関数で表示 4Traceback (most recent call last): 5 File "dice_game.py", line 6, in <module> 6 my_dice = dice.Dice(num) #ユーザー用のサイコロ 7 File "C:\Python34\dice.py", line 7, in __init__ 8 raise Exception('そんな正多面体はありません。') 9Exception: そんな正多面体はありません。
コードのどの部分が間違っているのでしょうか?
どなたかアドバイスをいただけますと助かります。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/19 13:20