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

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

新規登録して質問してみよう
ただいま回答率
86.02%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

受付中

Jupyterで定義されていない変数のエラー解決

TD66
TD66

総合スコア1

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1回答

0グッド

0クリップ

205閲覧

投稿2022/11/20 15:35

Jupyter初心者です。
ソースコードを実行すると,以下の様なエラーが出るのですがなぜNstateが定義されていないのか分からず、解決策をご教示お願いします。
self.Nstateに書き換えてみても,同様のエラーが出ました。

発生している問題・エラーメッセージ

NameError Traceback (most recent call last)
Cell In [6], line 4
2 room = Rooms()
3 room.s = 2
----> 4 print(room.step("right"))

Cell In [4], line 37, in Rooms.step(self, a)
35 def step(self,a):
36 if a == "right":
---> 37 if self.s == Nstate:
38 self.s += 1
39 self.r = 10

NameError: name 'Nstate' is not defined
エラーメッセージ

### 該当のソースコード Jupyter import random as ra class Rooms: def __init__(self, Nstate=5): self.state_list = list(range(1,Nstate+1,1)) self.r = -1 def reset(self, s=None): if s == None: self.s = ra.choice(self.state_list) else: self.s = s self.r = -1 return self.r def step(self,a): if a == "right": if self.s == Nstate: self.s += 1 self.r = 10 terminal = True else : self.s += 1 self.r = -1 terminal = False if a == "left": if self.s == 1: self.s -= 1 self.r = -1 terminal = True else: self.s -= 1 self.r = -1 terminal = False return self.s, self,r, terminal def render(self): if self.s > Nstate: i = 1 print("|") while i <= Nstate: print(i + "|" ) i = i + 1 print("@ r=10") if self.s < 1: i = 1 print("@|") while i <= Nstate: print(i + "|") i = i + 1 print(" r=-1") if self.s>0 and self.s < Nstate: i = 1 print("|", end='') while i <= Nstate: if i == self.s: print("@|") else: print(i) print("|") i = i + 1 print(" r=0") room = Rooms() room.s = 2 print(room.step("right"))

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

melian

2022/11/20 15:49 編集

Nstate を self.state_list [-1] に変更するか、__init__() で例えば self.Nstate = Nstate としておくか、でしょうね。
otn

2022/11/20 16:09

変数のスコープ(変数の有効範囲)について、勉強し直しましょう。
TD66

2022/11/21 02:29

ありがとうございます。解決いたしました。
TD66

2022/11/21 02:36

今度は,room.render()を実行すると, <bound method Rooms.render of <__main__.Rooms object at 0x7fae0cd12e50>> という出力になります。 理想は引数sの部屋に@を出力したいのですが。 例えば,s=2なら  |1|@|3|4|5|のように
melian

2022/11/21 02:47

新規の問題と思いますので、別質問を新たに投稿する方が適切かと思います。

回答1

1

なぜNstateが定義されていないのか分からず、

どこでその変数が定義されているとお考えなんでしょうか

投稿2022/11/21 00:36

y_waiwai

総合スコア86052

spoofy_dragon👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。