Menu
Coddy logo textTech

ユーザー入力の取得

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

challenge icon

チャレンジ

簡単

前のレッスンでは、割り勘計算機(Bill Split Calculator)のウェルカムメッセージを作成しました。次は、請求額の計算のためにユーザー入力を収集する機能を追加しましょう。

既存のウェルカムメッセージの後に、ユーザーから3つの入力を読み取ります:

  1. 請求総額
  2. チップのパーセンテージ(整数として。例:15%の場合は 15
  3. 請求額を分割する人数

(このプラットフォームのように)非対話的に実行される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_percent、および people という名前の変数に保存します。

入力を読み取った後、入力された内容を以下の形式で表示する確認メッセージを表示します:

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

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

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

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

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

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

このパターンを3つの確認行すべてに適用します:

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

基礎のすべてのレッスン