44439


タイトルにある通り、エラーが出ます。  
コード、エラーメッセージは以下の通りです。

【コード】

[code]

    import random
    
    class Dice:
        face_num=6
        def _init_(self):
    
            print("Hello")
    
    def shoot(self):
            return random.randint(1,self.face_num)
    
[/code]

【エラーメッセージ】

>
[code]

>     >>> import dice
>     >>> sai=dice.Dice()
>     >>> sai.shoot()
>     Traceback (most recent call last):
>       File "<stdin>", line 1, in <module>
>     AttributeError: 'Dice' object has no attribute 'shoot'
>  
[/code]

* * *

問題⑴  
sai=dice.Dice()の部分でHelloが出ません。

問題⑵  
sai.shoot()の部分でランダムに１〜６の数字が出ません。  
＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿＿

当方初学者であり、大変初歩的な質問であるとは自覚しておりますが、  
どうぞよろしくお願いいたします。


CC BY-SA 4.0
2018-05-31T15:44:52.300
44438
2018-05-31T16:03:07.533
2018-05-31T15:50:23.913
3605
28620
question
python python3
入門書通りコードを書き、pyファイルをターミナル上で実行したところエラーが出ました。


  1. `__init__`の両側は _ が2つずつです。一つだけだと、ただのメソッドになってしまいます。

  2. `def shoot(self):` がインデントされていないので、Dice クラスとは関係のない関数になっています。Python ではインデントがとても重要なので気を付けてください。

手直ししたコードは

[code]

    import random
    
    class Dice:
        face_num=6
        def __init__(self):
    
            print("Hello")
    
        def shoot(self):
            return random.randint(1,self.face_num)
    
[/code]


CC BY-SA 4.0
2018-05-31T16:03:07.533
44439
2018-05-31T16:03:07.533
3605
44438
answer