鱼C论坛

 找回密码
 立即注册
楼主: ling830

[技术交流] 基础 for 循环练习

[复制链接]
 楼主| 发表于 昨天 22:03 | 显示全部楼层
修改这个程序:
name = 'World'
line = ''
for char in name:
    line = line + char
    print(line)

在三角形的每个字符后添加一个空格,使输出看起来像这样:
  1. W
  2. W o
  3. W o r
  4. W o r l
  5. W o r l d
复制代码

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

使用道具 举报

发表于 昨天 22:03 | 显示全部楼层
ling830 发表于 2026-07-21 22:03
修改这个程序:
name = 'World'
line = ''
for cha ...


修改后的程序如下:


  1. name = 'World'
  2. line = ''
  3. first = True
  4. for char in name:
  5.     if first:
  6.         line = char
  7.         first = False
  8.     else:
  9.         line = line + ' ' + char
  10.     print(line)
复制代码


输出结果:
W
W o
W o r
W o r l
W o r l d

解释:通过 first 标记是否为第一个字符,避免在开头添加空格。后续每个字符前添加一个空格,实现字符间的空格分隔。

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

使用道具 举报

 楼主| 发表于 昨天 22:06 | 显示全部楼层
非常好!现在修改程序,使每一行都是反向的,像这样:
  1. W
  2. oW
  3. roW
  4. lroW
  5. dlroW
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 22:06 | 显示全部楼层
ling830 发表于 2026-07-21 22:06
非常好!现在修改程序,使每一行都是反向的,像这样: ...


修改后的程序如下:

name = 'World'  
line = ''  
for char in name:  
    line = char + line  
    print(line)  

输出结果:  
W  
oW  
roW  
lroW  
dlroW  

解释:将每次获得的字符添加到 line 的前面,而非后面,从而实现反向累积。

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

使用道具 举报

 楼主| 发表于 昨天 22:07 | 显示全部楼层
ling830 发表于 2026-7-21 22:06
非常好!现在修改程序,使每一行都是反向的,像这样:
  1. name = 'World'
  2. line = ''
  3. test = True
  4. for char in name:
  5.     if test:
  6.         line = char
  7.         test = False
  8.     else:
  9.         line = line + " " + char
  10.     print(line)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 22:07 | 显示全部楼层
ling830 发表于 2026-07-21 22:07
ling830 发表于 2026-7-21 22:06
非常好!现在修改程 ...


你提供的代码实现了在字符间添加空格的三角形,但这不是“每一行反向”的要求。反向是指每一行从右向左累积字符,输出如下:  
W  
oW  
roW  
lroW  
dlroW  

正确的程序是:  

name = 'World'  
line = ''  
for char in name:  
    line = char + line  
    print(line)  

你可以直接复制运行,观察输出结果。

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

使用道具 举报

 楼主| 发表于 昨天 22:09 | 显示全部楼层
FishC 发表于 2026-7-21 22:07
你提供的代码实现了在字符间添加空格的三角形,但这不是“每一行反向”的要求。反向是指每一行从右向左 ...
  1. name = 'World'
  2. line = ''
  3. test = True
  4. for char in name:
  5.     line += char
  6.     print(line)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 22:09 | 显示全部楼层
ling830 发表于 2026-07-21 22:09
FishC 发表于 2026-7-21 22:07
你提供的代码实现了在 ...


你的代码是正向累积的(每行依次添加字符),而题目要求每一行都是反向的。正确的反向累积程序是:

name = 'World'  
line = ''  
for char in name:  
    line = char + line  
    print(line)

输出:  
W  
oW  
roW  
lroW  
dlroW  

你的代码输出为:  
W  
Wo  
Wor  
Worl  
World  

请将拼接顺序改为 char + line 即可实现反向。

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

使用道具 举报

 楼主| 发表于 昨天 22:10 | 显示全部楼层
注意 line = char + line 没有简写。

现在使用 += 和 for 循环来编写自己的程序,打印出 '划线' 的 name,像这样
  1. World
  2. -----
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 22:10 | 显示全部楼层
ling830 发表于 2026-07-21 22:10
注意 line = char + line 没有简写。

现在使用 +=  ...


根据您的要求,用 name+= 以及 for 循环打印出“划线”的 name,即先输出 name,再输出等长的横线。例如 name='World' 输出:

World  
-----  

程序如下:  

  1.   
  2. name = 'World'  
  3. print(name)  
  4.   
  5. line = ''  
  6. for char in name:  
  7.     line += '-'  
  8. print(line)  
复制代码


解释:  
- 先打印原始字符串 name。  
- 初始化空字符串 line。  
- 循环遍历 name 中的每个字符(次数等于字符串长度),每次拼接一个 '-' 到 line。  
- 循环结束后打印 line,即得到与 name 长度相同的短横线。

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

使用道具 举报

 楼主| 发表于 昨天 22:11 | 显示全部楼层
FishC 发表于 2026-7-21 22:10
根据您的要求,用 name 和 += 以及 for 循环打印出“划线”的 name,即先输出 name,再输出等长的横线 ...
  1. name = 'World'  
  2. print(name)  
  3. line = ''  
  4. for char in name:  
  5.     line += '-'  
  6. print(line)  
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 22:11 | 显示全部楼层
ling830 发表于 2026-07-21 22:11
FishC 发表于 2026-7-21 22:10
根据您的要求,用 nam ...


您已经给出了正确的程序,运行后输出:

World  
-----  

代码块如下:


  1. name = 'World'
  2. print(name)

  3. line = ''
  4. for char in name:
  5.     line += '-'
  6. print(line)
复制代码


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

使用道具 举报

 楼主| 发表于 昨天 22:12 | 显示全部楼层
太棒了!
顺便说一下,当你不需要使用变量时,通常的约定是将该变量命名为 _(下划线),例如 for _ in name:。这不会改变程序的运行方式,但对读者很有帮助。
让我们把这个做得更花哨。扩展你的程序,在名字周围画一个框,像这样:
  1. +-----+
  2. |World|
  3. +-----+
复制代码

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

使用道具 举报

发表于 昨天 22:12 | 显示全部楼层
ling830 发表于 2026-07-21 22:12
太棒了!
顺便说一下,当你不需要使用变量时,通常的 ...


根据您的要求,扩展程序画出包含名字的边框,输出应为:

+-----+
|World|
+-----+

程序如下:

name = 'World'
line = ''
for _ in name:
    line += '-'
print('+' + line + '+')
print('|' + name + '|')
print('+' + line + '+')

代码解释:
- 使用 for _ in name 循环,每次添加一个 '-' 到 line,形成与 name 等长的横线。
- 第一行和第三行拼接 '+' + line + '+' 作为边框。
- 第二行拼接 '|' + name + '|' 作为内容行。

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

使用道具 举报

 楼主| 发表于 昨天 22:17 | 显示全部楼层
FishC 发表于 2026-7-21 22:12
根据您的要求,扩展程序画出包含名字的边框,输出应为:

+-----+
  1. name = 'World'  
  2. line = ''
  3. for _ in name:
  4.     line += '-'
  5. print('+' + line + '+')
  6. print('|' + name + '|')
  7. print('+' + line + '+')  
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 22:17 | 显示全部楼层
ling830 发表于 2026-07-21 22:17
FishC 发表于 2026-7-21 22:12
根据您的要求,扩展程 ...


很好!你正确实现了画框程序:使用循环生成等长横线,并拼接边框与内容。运行结果正是预期的:  

+-----+  
|World|  
+-----+  

你已经掌握了用for循环构建字符串的核心技巧。接下来可以尝试改变name的值,程序会自动适应长度。

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

使用道具 举报

 楼主| 发表于 昨天 22:17 | 显示全部楼层
你越来越棒了!看起来你需要更多的挑战……也许不把名字放在框里,而是让名字成为框?写一个程序,输出这个:
  1. +World+
  2. W     W
  3. o     o
  4. r     r
  5. l     l
  6. d     d
  7. +World+
复制代码

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

使用道具 举报

发表于 昨天 22:17 | 显示全部楼层
ling830 发表于 2026-07-21 22:17
你越来越棒了!看起来你需要更多的挑战……也许不把名 ...


根据要求,输出如下图形:

+World+  
W     W  
o     o  
r     r  
l     l  
d     d  
+World+

程序如下:


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


解释:第一行和最后一行固定为 '+' + name + '+'。中间每行循环遍历 name 的每个字符,左右各输出该字符,中间填充 len(name) 个空格,使得整体宽度与第一行一致。

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

使用道具 举报

 楼主| 发表于 昨天 22:22 | 显示全部楼层
FishC 发表于 2026-7-21 22:17
根据要求,输出如下图形:

+World+  

name = 'World'  
print('+' + name + '+')
for ch in name:
    print(ch + ' ' * len(name) + ch)
print('+' + name + '+')
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 昨天 22:22 | 显示全部楼层
ling830 发表于 2026-07-21 22:22
FishC 发表于 2026-7-21 22:17
根据要求,输出如下图 ...


你写对了!这个程序完美地实现了“名字成为边框”的效果。运行后输出:  

+World+  
W     W  
o     o  
r     r  
l     l  
d     d  
+World+  

你的代码中:  
- 第一行和最后一行用 '+' + name + '+' 组成边框。  
- 中间每行用 `ch + ' ' * len(name) + ch` 使左右字符相同,中间填充与名字等长的空格,形成等宽空心效果。  

你已经掌握了字符串拼接和循环生成重复字符的技巧。非常棒!

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-22 03:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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