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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

459閲覧

Ruby eval forループの評価

tampopoo2

総合スコア6

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2020/09/11 06:26

前提・実現したいこと

プログラミング初心者です。
現在、rubyのeラーニングシステムをつくっており、
記述の問題としてevalの使用を考えています。
入力したものと解答のevalの評価が一致するかで正誤判定を行うつもりです。
evalはirbと同じ挙動を行うということだけが理解できており、
irbでforループを使用した以下のコードを実行しました。
"ああああああああああ"と評価してほしいのですが、
表示はされても"1..10"と評価されてしまいます。
これでは正しく正誤判定ができないのですが、
何か良い方法はないでしょうか。

該当のソースコード

irb

1a = " 2for i in 1..10 3 print 'あ' 4end 5" 6#=> "\nfor i in 1..10\n print 'あ'\nend\n" 7 8eval(a) 9#ああああああああああ=> 1..10

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

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

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

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

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

guest

回答1

0

ベストアンサー

これでは正しく正誤判定ができないのですが、

何か良い方法はないでしょうか。

きちっと標準出力の値を見て判定してください。$stdoutを差し替えることでprintの結果を変数に流すことが可能となります。

「入力したものと解答のevalの評価が一致するかで正誤判定」は、それだけでは全く足りません

投稿2020/09/11 06:45

maisumakun

総合スコア146018

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

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

tampopoo2

2020/09/11 07:16

回答ありがとうございます。 標準出力の値で判定するのですね。 勉強不足で勘違いをしていました、、、。 全く足りません。ということですが、他にも必要なことはありますでしょうか。 恥ずかしながら手も足も出ない状態なのでご教示いただけると嬉しいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問