使用 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!
挑战
简单读取两行输入,并显示个性化的问候语。
你会收到两个输入:
- 名字
- 城市名
起始代码已经使用 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这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: R 在线编译器