求助:使用R语言绘制带中间空格的星号图案
解决R语言绘制带中间空格的星号图案问题
你需要生成的目标图案是:
你的原代码只处理了前导空格和连续星号,没有考虑部分行需要在星号中间添加空格的逻辑,所以无法得到正确结果。
直接实现方案(固定图案)
如果是生成固定的这个图案,最直接的方式是逐行定义内容后打印:
draw_pattern <- function() { lines <- c( "*********", " *** *** ", " ***** ", " * * ", " * " ) for (line in lines) { cat(line, "\n") } } # 调用函数生成图案 draw_pattern()
动态生成方案(基于行规律)
如果想要通过逻辑动态生成(而非硬编码每行内容),可以分析每行的前导空格和星号结构规律:
- 前导空格数:每行是
(行号-1)*2个空格 - 星号部分根据行号有不同的结构
对应的代码:
draw_pattern <- function() { total_rows <- 5 for (row in 1:total_rows) { # 生成前导空格 leading_spaces <- strrep(" ", (row - 1) * 2) # 根据行号匹配对应的星号结构 star_segment <- switch(row, "1" = strrep("*", 9), "2" = "*** ***", "3" = strrep("*", 5), "4" = "* *", "5" = "*" ) # 拼接并打印整行 cat(leading_spaces, star_segment, "\n", sep = "") } } draw_pattern()
运行上面任意一段代码,都能得到你需要的星号图案。
内容的提问来源于stack exchange,提问作者user20994580
相关产品推荐
相关产品推荐

