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

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

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

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

Q&A

解決済

1回答

439閲覧

グローバル変数について

urazome

総合スコア26

Python 3.x

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

0グッド

0クリップ

投稿2018/08/17 10:37

課題内容----------------------------------------------------------------------
RPGの攻撃シーンを表示するプログラムで、teamのメンバーが順番にattack関数を呼び出しす。さらに、teamのメンバーが攻撃した後に、敵の体力(enemy_hp)を表示するようになっています。敵の最初の体力は標準入力によって入力されます。

ここに、teamのメンバーが攻撃した分だけ、敵の体力をマイナスするコードを追加してください。

入力--------------------------------------------------------------------------
730

質問---------------------------------------------------------------------------
以下のコードを出力した際、エラー名は出なかったのですが、エラーが出ました。
「global enemy_hp」のところです。模範解答では、enemy_hp -= powerしか書かれでいませんでした。しかし、これはグローバル変数を変えてることにならないのですか?

pyton

1def attack(person): 2 print(person + "はスライムを攻撃した") 3 4def output_ememy_hp(enemy_hp): 5 print("敵のHPは残り" + str(enemy_hp) + "です") 6 7enemy_hp = int(input()) 8team = {"勇者" : 200, "戦士" : 150, "魔法使い" : 100} 9 10for person, power in team.items(): 11 attack(person) 12 # 以下に、敵の体力を減少させるコードを書く 13 global enemy_hp 14 enemy_hp -= power 15 output_ememy_hp(enemy_hp) 16

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

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

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

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

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

tachikoma

2018/08/17 10:48

global enemy_hpを置いた意図をもう少し説明を加えてもらえないでしょうか。
hayataka2049

2018/08/17 10:59

なんの課題なのか、出典を示しましょう
pepperleaf

2018/08/17 11:47

何が問題なのでしょうか? 敵の体力を enemy_hp というグローバル変数に設定しているだけだと思います。また、エラーが出ましたとありますが、どんなエラーなのでしょうか?
guest

回答1

0

ベストアンサー

質問に情報が少ないので予想なのですがurazome様は変数のスコープ(参照)についてとglobalの使い方の解釈を間違っているしまっているのではないでしょうか

for文の中からenemy_hpを参照出来ないと思ってしまってglobalを追加してしまったのでしょうか?

enemy_hpは最初からグローバル変数なのでfor文の中から参照できます。

またfor文にはスコープ(外から参照できない壁)が出来ないのでglobalは使いません。

globalは主にdefの中にある変数を参照したい時に使います。

Pythonでのグローバル(global)変数の宣言方法

投稿2018/08/17 14:17

grilled_python

総合スコア237

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

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

urazome

2018/08/17 15:38

仰る通りでした!「関数内」という言葉を聞き逃していたみたいです。ありがとうございました!
grilled_python

2018/08/18 06:02

お役に立てて良かったです。 質問される際は、「望む結果」「自分がどう解釈しているか」「実際のエラーメッセージ」などもう少し細かく記入すると回答を得られやすくなると思います。
urazome

2018/08/18 15:51

わかりました。反省し、以後気を付けます。エラー名はなく、ちゃんと出力はされたのですが、エラー時に見られる✖マークが「global enemy_hp」のところに出現しました。あれは何だったのでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問