プロが教えるわが家の防犯対策術!

Pythonです。
monster ballを定義していないと出てしまいます。
ifの場所で定義しているのになぜ定義していないと言うのでしょうか?

「Pythonです。 monster ba」の質問画像

A 回答 (2件)

だって、asaもsouguuもmonster_ballも確率で生成されるんでしょ?


このコード上、ifの条件式使っても、「生成されない場合」は「そんなモン存在しません」って言われるのは当たり前です。
確率で上手く通る時ってのはかなり小さいんじゃないですか?

例1:
asa = asa = random.randint(1, 20)

なので、asa が1以外の場合 -> souguuって変数が生成されない -> if souguu == 1:は存在しない変数を参照するのでエラー

例2:
「運良く」asa == 1が通ってついでにsouguu == 1が通った場合

for k in range(3):で、kには0、1、2、と代入されていく => 最初はk = 0である => 従って if k == 1: はスルーされるのでmonster_ballは生成されない => 次の if monster_ball == 1:で「存在しない変数」monster_ballが出てきて怒られる

かなりロジックが甘いですね。
    • good
    • 3
この回答へのお礼

ありがとうございます!
おかげで改善出来ました!

お礼日時:2020/08/23 21:05

あ、あとそれと。



> ifの場所で定義しているのに

条件節で変数の定義は出来ません。出来るのは変数の参照だけ、です。

そんなこたぁインタプリタで試してみればすぐ分かる事です。

Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>> if x == 1:
   x


Traceback (most recent call last):
 File "<pyshell#2>", line 1, in <module>
  if x == 1:
NameError: name 'x' is not defined
>>>
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!