chara.csvでの選別プログラム例

プログラム

mychara.rb

#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
require 'csv'

# ./mydata.rb CSVファイル名
# のように起動するとそのファイルを読む。
data = CSV.read(ARGV[0] || "mydata.csv", headers:true)

#(1)カラムで選ぶ
print "属性、最大MP、初期MP のどれを出しますか: "
sel = STDIN.gets.chomp		# 後ろにファイル名をつけて起動するときは
				# STDIN.gets とする必要がある
data.each do |row|
  printf("%sの%sは%sです。\n", row["名前"], sel, row[sel])
end

#(2)最大MPで選ぶ
print "最大MPの下限: "
kagen = STDIN.gets.to_i
print "最大MPの上限: "
jogen = STDIN.gets.to_i

data.each do |row|
  mp = row["最大MP"].to_i	# 文字列なので整数化しておく
  if mp >= kagen && mp <= jogen
    printf("%sの最大MPは%dです。\n", row["名前"], mp)
  end
end

#(3)属性で選ぶ
puts "属性一覧:"
puts data["属性"]
print "どの属性にしますか: "
zoku = STDIN.gets.chomp

data.each do |row|
  if zoku == row["属性"]
    printf("%sの属性は%sです。\n", row["名前"], row["属性"])
  end
end

chara.csvの内容(画像)

実行例

./mychara.rb chara.csv
属性、最大MP、初期MP のどれを出しますか: 最大MP
ドナポンの最大MPは250です。
ラジャインの最大MPは450です。
リッタンの最大MPは150です。
音助の最大MPは100です。
最大MPの下限: 200
最大MPの上限: 300
ドナポンの最大MPは250です。
属性一覧:
甘
土
沼
波
どの属性にしますか: 
リッタンの属性は沼です。

本日の目次