Menu
Coddy logo textTech

ユーザー入力の取得

CoddyのRジャーニー「基礎」セクションの一部。レッスン 34/78。

challenge icon

チャレンジ

簡単

前のレッスンでは、Bill Split Calculator の welcome メッセージを作成しました。次に、bill の計算に使用する user の入力を受け取る機能を追加します。

既存の welcome メッセージの後に、user から3つの入力を読み取ります。

  1. bill の合計金額
  2. チップの割合(整数。例:15% の場合は 15
  3. bill を分割する people の数

このプラットフォームのように、非対話的に実行される R スクリプトでは、入力は標準入力ストリームから読み取ります。そのためには、まず file() を使用して stdin への接続を開き、次に readLines() で各行を読み取り、完了したら接続を閉じます。

con <- file("stdin", "r")
bill <- as.numeric(suppressWarnings(readLines(con, n = 1)))
tip_percent <- as.numeric(suppressWarnings(readLines(con, n = 1)))
people <- as.numeric(suppressWarnings(readLines(con, n = 1)))
close(con)

各部分の動作は次のとおりです。

  • file("stdin", "r"):標準入力ストリームを読み取り用に開き、con に格納します
  • readLines(con, n = 1):その接続から正確に1行を読み取ります。注意:readLines()readline() とは異なります。readLines() はファイル接続(stdin を含む)で動作し、n = を使用して一度に複数行を読み取れます。一方、readline() は R コンソールでの対話的な操作でのみ動作します
  • suppressWarnings(...):この方法で stdin から読み取るときに表示される無害な警告を抑制します。R がスクリプト内で stdin から読み取ると、すべて正常に動作していても、"incomplete final line" のような警告が表示されることがあります。呼び出しを suppressWarnings() で囲むと、これらのメッセージが非表示になり、出力が乱雑になるのを防げます。読み取る値には影響しません
  • as.numeric(...):テキスト入力を数値に変換します
  • close(con):すべての入力を読み取った後で接続を閉じます

3つの値を、billtip_percentpeople という名前の変数に格納します。

入力を読み取った後、入力された内容を次の形式で示す confirmation メッセージを表示します。

Bill: $[bill]
Tip: [tip_percent]%
People: [people]

すべての出力には cat() を使用し、必要な箇所に改行文字 \n を含めます。不要なスペースを避けるため、各 cat() 呼び出しで sep = "" を使用します。

デフォルトでは、cat() は出力する各項目の間にスペースを挿入します。たとえば:

cat("Bill: $", 120, "\n")   # prints: Bill: $ 120 

$120 の間、および改行の前に不要なスペースがあることに注意してください。sep = "" を追加すると、cat() は区切り文字として空文字列を使用するため、項目の間に何も挿入されません。

cat("Bill: $", 120, "\n", sep = "")   # prints: Bill: $120

このパターンを、3つすべての confirmation 行に適用します。

cat("Bill: $", bill, "\n", sep = "")
cat("Tip: ", tip_percent, "%\n", sep = "")
cat("People: ", people, "\n", sep = "")

たとえば、入力が 120184 の場合、完全な出力は次のようになります。

Welcome to the Bill Split Calculator!
Let's split your bill fairly.
Bill: $120
Tip: 18%
People: 4

自分で試してみよう

# TODO: Write your code below
# Use cat() to display the welcome message
# Remember to use \n for new lines
cat("Welcome to the Bill Split Calculator!\nLet's split your bill fairly.\n")

基礎のすべてのレッスン

自分で練習してみよう: Rオンラインコンパイラ