ling830 发表于 2026-7-21 21:48:19

基础 for 循环练习

该进行一些练习了!修改这个程序:
name = 'World'

for character in name:
    print(character)
    print('---')

使其输出:
---W
---o
---r
---l
---d

答案:
name = 'World'

for character in name:
    print('---'+ character)
   

现在写一个程序,使其为 name 中的每个字符打印一次 name。
对于 name = 'World',它应该输出:
World
World
World
World
World

答案:
name = 'World'

for i in name:
    print(name)
   

FishC 发表于 2026-7-21 21:48:27

题目要求写一个程序,使得对于 name = 'World',输出结果为:

World
World
World
World
World

答案如下:

name = 'World'

for i in name:
    print(name)

这里循环变量 i 虽然未被使用,但循环体执行了 len(name) 次,因此 print(name) 会打印5次,得到所需输出。

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

ling830 发表于 2026-7-21 21:49:49

在我们查看更多循环之前,我们需要快速学习另一个概念。看看这个程序:
hello = 'Hello'
print(hello)
hello = hello + '!'
print(hello)

FishC 发表于 2026-7-21 21:49:59

ling830 发表于 2026-07-21 21:49
在我们查看更多循环之前,我们需要快速学习另一个概念 ...

该程序演示了字符串拼接和重新赋值的过程。

程序分析:

[*] 首先,hello = 'Hello' 将字符串 'Hello' 赋值给变量 hello。
[*] 执行 print(hello) 输出:Hello。
[*] 然后 hello = hello + '!',将原字符串 'Hello' 与 '!' 拼接成新字符串 'Hello!',并重新赋值给 hello。
[*] 最后 print(hello) 输出:Hello!


输出结果:
Hello
Hello!

这里的关键是字符串虽不可变,但可以通过赋值操作让变量指向新的字符串对象。这个技巧在循环中常用于逐步构建字符串。

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

ling830 发表于 2026-7-21 21:50:23

你觉得hello = hello + '!'这一行做了什么?运行程序来找出答案。

FishC 发表于 2026-7-21 21:50:27

ling830 发表于 2026-07-21 21:50
你觉得hello = hello + '!'这一行做了什么?运行程序 ...

这行代码 hello = hello + '!' 执行了两个操作:

1. 拼接字符串:将变量 hello 当前的值('Hello')与字符串 '!' 连接,形成新字符串 'Hello!'。
2. 重新赋值:将新字符串 'Hello!' 存储回变量 hello,覆盖原来的值。

运行程序后,先输出 Hello,再输出 Hello!。

这种写法常用于循环中逐步构建字符串,比如累积字符。

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

ling830 发表于 2026-7-21 21:52:19

FishC 发表于 2026-7-21 21:50
这行代码 hello = hello + '!' 执行了两个操作:

1. 拼接字符串:将变量 hello 当前的值('Hello' ...

Hello
Hello!

FishC 发表于 2026-7-21 21:52:26

ling830 发表于 2026-07-21 21:52
FishC 发表于 2026-7-21 21:50
这行代码 hello = hel ...

是的,运行程序后的输出正是:

Hello
Hello!

第一行 print(hello) 输出初始值 Hello。
第二行 hello = hello + '!' 将字符串拼接成 Hello! 并重新赋值,因此第二次 print(hello) 输出 Hello!。

这样你就理解了拼接与重新赋值的原理。

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

ling830 发表于 2026-7-21 21:53:31

Python并不在乎hello在=的左右两边,
它只是像处理不同变量一样处理:它计算hello + '!',此时是'Hello' + '!',
结果是'Hello!',这就成为了hello的新值。如果有帮助的话,你可以将这一行想象成分成两个步骤:
temp = hello + '!'
hello = temp
或者:
temp = hello
hello = temp + '!'

这在循环中非常有用。尝试这个程序:
name = 'World'
line = '-'
for char in name:
    line = line + char
    print(line)

FishC 发表于 2026-7-21 21:53:41

ling830 发表于 2026-07-21 21:53
Python并不在乎hello在=的左右两边,
它只是像处理不 ...

该程序演示了在循环中通过拼接逐步构建字符串的过程。

程序运行结果:
-
-W
-Wo
-Wor
-Worl
-World

解释:
1. 初始 line = '-'
2. 循环遍历 name 的每个字符 'W','o','r','l','d'
   - 第一次:line = '-' + 'W' → '-W',打印 '-W'
   - 第二次:line = '-W' + 'o' → '-Wo',打印 '-Wo'
   - 以此类推
3. 最终 line 变成 '-World',打印后循环结束

这种逐步拼接的技巧常用于生成前缀或后缀。

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

ling830 发表于 2026-7-21 21:55:13

花点时间确保你完全理解这个程序。它做的事情类似于:
line = '-'

char = 'W'
line = line + char
   = '-'+ 'W'
   = '-W'
print('-W')

char = 'o'
line = line+ char
   = '-W'+ 'o'
   = '-Wo'
print('-Wo')

char = 'r'
line = line+ char
   = '-Wo' + 'r'
   = '-Wor'
print('-Wor')

...

name = 'World'
line = '-'
for char in name:
    print(line)
    line = line + char
细节很重要。如果你交换最后两行并运行这个程序,会发生什么?

FishC 发表于 2026-7-21 21:55:22

ling830 发表于 2026-07-21 21:55
花点时间确保你完全理解这个程序。它做的事情类似于: ...

交换最后两行后的程序:

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


运行结果:
-
-W
-Wo
-Wor
-Worl

解释:
循环每次先打印当前 line 的值,再拼接新字符。因此:

[*]第一次循环(char='W'):打印初始 line='-',然后 line 变成 '-W'。
[*]第二次循环(char='o'):打印 '-W',然后 line 变成 '-Wo'。
[*]第三次循环(char='r'):打印 '-Wo',然后 line 变成 '-Wor'。
[*]第四次循环(char='l'):打印 '-Wor',然后 line 变成 '-Worl'。
[*]第五次循环(char='d'):打印 '-Worl',然后 line 变成 '-World',但循环结束,不再打印最终结果。

所以输出共五行,缺少原程序最后的 '-World'。

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

ling830 发表于 2026-7-21 21:56:47

name中的最后一个字符只有在循环结束时才会被添加到line中,而此时print(line)已经最后一次运行过了。因此,该字符和完整的name永远不会在三角形的底部打印出来。如果你感到困惑,可以尝试将print(line)放在line = line + char之前和之后。

让我们去掉输出中的那些-字符。你可能已经能够猜到怎么做了。

一个空字符串是一个完全不包含任何字符的字符串。 它的写法就是一对没有内容的引号:''。 它就像字符串的零。 将它添加到另一个字符串中,只会得到另一个字符串,保持不变, 就像0 + 5只是5一样。

在shell中尝试这个:

'' + '' + ''
会出现什么?

FishC 发表于 2026-7-21 21:56:55

ling830 发表于 2026-07-21 21:56
name中的最后一个字符只有在循环结束时才会被添加到li ...

在shell中执行 '' + '' + '' 的结果是 ''(空字符串)。因为空字符串拼接空字符串仍然为空,就像 0 + 0 + 0 的结果是0一样。

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

ling830 发表于 2026-7-21 21:57:48

不要将空字符串与' '混淆,后者是一个包含一个字符(空格)的非空字符串。
现在修复原始程序,去掉输出中的那些行,这样对于name = 'World'它将打印:
W
Wo
Wor
Worl
World

FishC 发表于 2026-7-21 21:57:54

ling830 发表于 2026-07-21 21:57
不要将空字符串与' '混淆,后者是一个包含一个字符( ...

修改后的程序:
name = 'World'
line = ''
for char in name:
    line = line + char
    print(line)

输出:
W
Wo
Wor
Worl
World

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

ling830 发表于 2026-7-21 21:59:31

FishC 发表于 2026-7-21 21:57
修改后的程序:
name = 'World'
line = ''


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

FishC 发表于 2026-7-21 21:59:36

ling830 发表于 2026-07-21 21:59
FishC 发表于 2026-7-21 21:57
修改后的程序:
name ...

是的,这个程序已经正确实现了要求。

它从空字符串开始,循环中逐个字符拼接并打印,因此输出为:

W
Wo
Wor
Worl
World

这正是我们想要的结果。

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

ling830 发表于 2026-7-21 22:00:24

漂亮!
从空开始并通过for循环逐步构建的模式是非常常见的 ,你将会有很多练习机会。一些初始的空值是 ''、0和[] - 一个空列表,你很快就会看到它。

FishC 发表于 2026-7-21 22:00:30

ling830 发表于 2026-07-21 22:00
漂亮!
从空开始并通过for循环逐步构建的模式是非常常 ...

漂亮!你已经掌握了这个核心模式:从空值开始,在循环中逐步构建。这种模式在编程中非常常见,无论是字符串拼接、数字累加还是列表添加。

例如:
- 字符串:''
- 数字:0
- 列表:[]

接下来,你可以尝试用这个模式实现更多练习,比如累加数字或收集字符。准备好了吗?

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1] 2 3
查看完整版本: 基础 for 循环练习