鱼C论坛

 找回密码
 立即注册
查看: 31|回复: 7

[技术交流] 尝试写一个程序, 以对角线的形式输出

[复制链接]
发表于 5 小时前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
让我们把这个做得更花哨。扩展你的程序,在名字周围画一个框,像这样:
  1. +-----+
  2. |World|
  3. +-----+
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 5 小时前 | 显示全部楼层
以下是您需要的程序:它读取一个名字(例如 "World"),然后输出一个带框的对角线效果,框内每个字符都位于对角线上。


  1. name = input("请输入名字: ")
  2. n = len(name)

  3. # 上边框
  4. print("+" + "-" * n + "+")

  5. # 中间对角线行
  6. for i in range(n):
  7.     line = "|" + " " * i + name[i] + " " * (n - 1 - i) + "|"
  8.     print(line)

  9. # 下边框
  10. print("+" + "-" * n + "+")
复制代码


**运行示例:**  
输入 World 得到:


  1. +-----+
  2. |W    |
  3. | o   |
  4. |  r  |
  5. |   l |
  6. |    d|
  7. +-----+
复制代码


**核心思路:**  
- 用边框(加号和横线)包围一个 n×n 的区域,n 是名字长度。  
- 第 i 行(从0开始)先输出 i 个空格,然后输出名字的第 i 个字符,再补足到 n 个空格,最后加右侧竖线。  
- 这样就实现了每个字符沿主对角线放置,同时外围有整齐的方框。  

如果需要其他名字,只需在输入时提供即可。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 5 小时前 | 显示全部楼层
本帖最后由 ling830 于 2026-7-24 16:27 编辑
  1. name = 'World'
  2. border = '+' + '-' * len(name) + '+'
  3. print(border)
  4. print('|' + name + '|')
  5. print(border)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 5 小时前 | 显示全部楼层
ling830 发表于 2026-07-24 16:25
name = 'World'
border = '+' + '-' * len(name) + ' ...


您贴出的代码只打印了一个普通的框,其中名字是完整一行显示,并没有“以对角线的形式输出”。我们需要将名字的每个字符沿主对角线逐个放置,同时在外部保留方框。  

正确的程序应该按如下方式实现(已在之前的回答中提供):  

  1. name = input("请输入名字: ")  
  2. n = len(name)  

  3. print("+" + "-" * n + "+")  
  4. for i in range(n):  
  5.     line = "|" + " " * i + name[i] + " " * (n - 1 - i) + "|"  
  6.     print(line)  
  7. print("+" + "-" * n + "+")
复制代码


运行结果示例(输入World):  
+-----+  
|W    |  
| o   |  
|  r  |  
|   l |  
|    d|  
+-----+  

这样就实现了对角线与边框相结合的效果。如果只使用您贴的代码,则只能得到一个简单的无对角线方框。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 5 小时前 | 显示全部楼层
你越来越棒了!看起来你需要更多的挑战……也许不把名字放在框里,而是让名字成为框?写一个程序,输出这个:
  1. +World+
  2. W     W
  3. o     o
  4. r     r
  5. l     l
  6. d     d
  7. +World+
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 5 小时前 | 显示全部楼层
ling830 发表于 2026-07-24 16:27
你越来越棒了!看起来你需要更多的挑战……也许不把名 ...


您需要的程序如下:用名字构造一个“框”,名字的每个字母同时出现在左右两侧,上下边框是“+名字+”。  

  1.   
  2. name = "World"  
  3. border = "+" + name + "+"  
  4. print(border)  
  5. for ch in name:  
  6.     print(ch + " " * len(name) + ch)  
  7. print(border)  
复制代码


运行结果:  
+World+  
W     W  
o     o  
r     r  
l     l  
d     d  
+World+  

如果希望支持任意输入,将第一行改为 name = input("请输入名字: ") 即可。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 5 小时前 | 显示全部楼层
只输出给定的 name 以对角线的形式,例如:

  1. W
  2. o
  3.   r
  4.    l
  5.     d
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 5 小时前 | 显示全部楼层
ling830 发表于 2026-07-24 16:28
只输出给定的 name 以对角线的形式,例如:W
o
  r ...


您只需要将名字的每个字符沿主对角线输出,即每行递增一个空格,然后打印该字符。下面是最简洁的实现:  

  1.   
  2. name = "World"  
  3. for i, ch in enumerate(name):  
  4.     print(' ' * i + ch)  
复制代码


运行结果:  
W  
o  
  r  
   l  
    d  

如果需要接收任意输入,将第一行改为 name = input("请输入名字: ") 即可。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-7-24 21:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表