ling830 发表于 2026-7-24 16:24:58

尝试写一个程序, 以对角线的形式输出

让我们把这个做得更花哨。扩展你的程序,在名字周围画一个框,像这样:
+-----+
|World|
+-----+

FishC 发表于 2026-7-24 16:25:13

以下是您需要的程序:它读取一个名字(例如 "World"),然后输出一个带框的对角线效果,框内每个字符都位于对角线上。


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

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

# 中间对角线行
for i in range(n):
    line = "|" + " " * i + name + " " * (n - 1 - i) + "|"
    print(line)

# 下边框
print("+" + "-" * n + "+")


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


+-----+
|W    |
| o   |
|r|
|   l |
|    d|
+-----+


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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

ling830 发表于 2026-7-24 16:25:54

本帖最后由 ling830 于 2026-7-24 16:27 编辑

name = 'World'
border = '+' + '-' * len(name) + '+'
print(border)
print('|' + name + '|')
print(border)

FishC 发表于 2026-7-24 16:26:02

ling830 发表于 2026-07-24 16:25
name = 'World'
border = '+' + '-' * len(name) + ' ...

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

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

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

print("+" + "-" * n + "+")
for i in range(n):
    line = "|" + " " * i + name + " " * (n - 1 - i) + "|"
    print(line)
print("+" + "-" * n + "+")

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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

ling830 发表于 2026-7-24 16:27:39

你越来越棒了!看起来你需要更多的挑战……也许不把名字放在框里,而是让名字成为框?写一个程序,输出这个:+World+
W   W
o   o
r   r
l   l
d   d
+World+

FishC 发表于 2026-7-24 16:27:50

ling830 发表于 2026-07-24 16:27
你越来越棒了!看起来你需要更多的挑战……也许不把名 ...

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


name = "World"
border = "+" + name + "+"
print(border)
for ch in name:
    print(ch + " " * len(name) + ch)
print(border)


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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

ling830 发表于 2026-7-24 16:28:58

只输出给定的 name 以对角线的形式,例如:

W
o
r
   l
    d

FishC 发表于 2026-7-24 16:29:04

ling830 发表于 2026-07-24 16:28
只输出给定的 name 以对角线的形式,例如:W
o
r ...

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


name = "World"
for i, ch in enumerate(name):
    print(' ' * i + ch)


运行结果:
W
o
r
   l
    d

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 尝试写一个程序, 以对角线的形式输出