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

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

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

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

Python

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

Q&A

1回答

671閲覧

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

TD66

総合スコア1

Jupyter

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

Python

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

0グッド

0クリップ

投稿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"))

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

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

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

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

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

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

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

回答1

0

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

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

投稿2022/11/21 00:36

y_waiwai

総合スコア87774

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問