Menu
CoddyTech

使用 readline() 读取输入

本课属于 Coddy R 学习旅程的“基础知识”单元。第 29 课,共 78 课。

到目前为止,你已经学会了如何显示输出。现在,是时候通过读取用户输入,让程序具有交互性了。readline() 函数可以读取用户输入的内容。

name <- readline()
cat("Hello,", name, "\n")

在交互式 R 会话(R 控制台或 RStudio)中运行这段代码时,R 会等待用户输入内容并按 Enter。用户输入的内容会存储在 name 变量中。如果用户输入 "Alice",输出会是:Hello, Alice

在这个平台上,你的代码会通过 Rscript 作为脚本运行,因此 readline() 不会等待,而是立即返回一个空字符串 ""。因此,本课挑战的初始代码会改用 readLines() 读取输入。

有一点很重要:readline() 总是返回字符串,即使用户输入的是数字。如果有人输入“25”,它也会被存储为文本 "25",而不是数字 25。你将在下一课学习如何转换数据类型。

你可以多次使用 readline() 来读取多个输入:

first <- readline()
second <- readline()
cat("First:", first, "\n")
cat("Second:", second, "\n")

在交互式会话中,每次调用 readline() 都会等待用户输入一行内容。

使用 cat() 将文本与变量组合时,每个用逗号分隔的项之间都会有一个空格。有时你需要在连接文本时不添加空格,例如将标点符号直接接在单词后面。这时可以使用 paste0()。它会连接字符串,字符串之间不添加分隔符:

city <- readline()
cat("Welcome to", paste0(city, "!"), "\n")

这里,paste0(city, "!") 会将 city 的值和 "!" 直接连接起来,中间没有空格。因此,如果用户输入 "Paris",输出就是:Welcome to Paris!

challenge icon

挑战

简单

读取两行输入,并显示个性化的问候语。

你会收到两个输入:

  1. 名字
  2. 城市名

起始代码已经使用 readLines() 将两个输入分别读入 name 和 city,因为 readline() 只能在交互式会话中使用,在这里无法读取任何内容。请按以下格式显示消息:

Welcome, [name] from [city]!

使用 cat() 输出内容。请确保末尾包含感叹号和换行符 \n。

例如,如果输入是 Emma 和 Paris,输出应为:

Welcome, Emma from Paris!

亲手试试

# 读取输入
con <- file("stdin", "r")
name <- suppressWarnings(readLines(con, n = 1))
city <- suppressWarnings(readLines(con, n = 1))

# TODO:在下方编写代码,显示问候语
# 使用 cat() 输出:Welcome, [name] from [city]!
# 别忘了在末尾加上换行符 \n
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: R 在线编译器