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

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

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

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

Q&A

解決済

5回答

1821閲覧

rubyの演算出力について

sanami

総合スコア11

Ruby

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

0グッド

0クリップ

投稿2015/02/22 06:41

rubyを始めたばかりの初心者です。

質問なのですが、コマンドプロンプトで "ファイル名⁺.rb"の後に数字を入力して
その数字がrbファイル内で変数として演算で使われ最終的な結果が出力されるには
どのように行えばよろしいでしょうか?

説明が下手で申し訳ないのですが詳しく教えていただければ幸いです。

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

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

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

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

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

guest

回答5

0

入力された引数が文字列として格納されているのは ARGV という名前の配列です。
数字を十進整数として扱うのであれば ARGV[0].to_i で十進整数に変換できます。
数字を浮動小数点数として扱うのであれば ARGV[0].to_f で浮動小数点数に変換できます。

ただし引数が入力されていないときには ARGV の値は nil になりますが、
そのときに ARGV[0].to_i の値は 0 になり、 ARGV[0].to_f の値は 0.0 になって
しまいます。ruby のソースコード内で引数が入力されているかどうかをチェックするように
された方がよいと思います。

投稿2015/02/22 07:46

takeshi_38ka0

総合スコア11

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

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

sanami

2015/02/22 12:14

ご丁寧に教えていただきありがとうございます♪ 無事引数を上手く扱うことができました。 差し支えなければまた質問させていただきたいのですが、 if文でARGVが数値文字列かによって 例えば数字の3と5の場合は+10を行い、 文字列がgとpの場合は文字の末尾にpを加えるといったことは可能でしょうか? よろしくお願いいたします。
guest

0

ベストアンサー

lang

1# coding: utf-8 2 3# 2 つの引数が数値の場合は 乗算、 4# 2 つの引数が少なくとも1つが文字列の場合は 文末にpを追加、 5# それ以外の引数の場合は errorと表示 6 7if ARGV.count == 2 8 if /\A\d+\z/ =~ ARGV[0] && /\A\d+\z/ =~ ARGV[1] 9 puts ARGV[0].to_i * ARGV[1].to_i 10 else 11 puts "#{ARGV[0]} #{ARGV[1]} p" 12 end 13else 14 puts 'error' 15end

実行例

$ ruby args.rb 10 3 30 $ ruby args.rb a b a b p $ ruby args.rb 1 error

投稿2015/02/22 13:58

katoy

総合スコア22324

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

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

sanami

2015/02/22 14:25

何度もご回答していただきありがとうございました。 とても参考になりました。 また解らないときはご教授お願いします。
guest

0

... コマンドプロンプト上の引数が数字であれば×10を また引数が文字であれば文字の後ろに”p”を加える ...

lang

1# coding: utf-8 2 3if ARGV.size == 1 4 5 if /\A\d+\z/ =~ ARGV[0] 6 # 数字が指定されていた場合 7 puts ARGV[0].to_i * 10 8 else 9 # その他 10 puts "#{ARGV[0]}p" 11 end 12 13end

実行例

ruby args.rb 12 120 $ ruby args.rb 12x 12xp

投稿2015/02/22 13:16

katoy

総合スコア22324

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

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

sanami

2015/02/22 13:29

またまた解りやすくご説明ありがとうございます。 最後にもう一つお聞きしたいのですが、 先ほど答えていただいたif文形式で 引数が数値の1か2の場合は乗算、 引数が文字列のaかbの時は文末にpを追加、 それ以外の引数の時はerrorと表示したいのですが教えていただけますでしょうか? お手数ですがよろしくお願いいたします。
guest

0

サンプルを書いてみました。

lang

1# coding: utf-8 2 3# 2つの変数で演算を行う。 4def calc(a, b) 5 a * 100 + b 6end 7 8# コマンドラインに指定された数字を変数に保存する。 9count = ARGV.size 10a = (count > 0)? ARGV[0].to_i : 0 11b = (count > 1)? ARGV[1].to_i : 0 12 13# 変数を使って演算する。 14result = calc(a, b) 15 16# 演算結果を出力する。 17puts result

実行例を示します。

$ ruby args.rb 0 $ ruby args.rb 1 100 $ ruby args.rb 1 2 102

投稿2015/02/22 12:23

katoy

総合スコア22324

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

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

sanami

2015/02/22 12:48

ご丁寧にありあとうございます。 またコメントまでつけていただきとても解りやすい内容でした。 ただ私の質問の仕方が悪かったのですが コマンドプロンプト上の引数が数字であれば×10を また引数が文字であれば文字の後ろに”p”を加えるといった 数値か文字列かによって処理が変わるif文のようなことは可能でしょうか? 度々で申し訳ないのですがよろしくお願い致します。
guest

0

takeshi_38ka0 さんの言うとおりですが具体的に書くとこんな感じです。

lang

1# add.rb というファイルに保存する 2result = ARGV[0].to_i + ARGV[1].to_i 3puts "足した結果は #{result} です。"
$ ruby add.rb 12 34 足した結果は 46 です。

投稿2015/02/22 10:53

hello-world

総合スコア1342

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問