Python for Kids
  • 0 前言
  • 1 编程环境准备
  • 2 运算符和表达式
  • 3 掌握变量
  • 4 字符串
  • 5 获取用户的输入
  • 6 条件判断
  • 7 条件判断实操
  • 8 FOR循环
  • 9 循环和列表
  • 10 WHILE循环
  • 11 WHILE循环实操
  • 12 WHILE循环再实操
  • 13 多重循环
  • 14 再谈列表
  • 15 初见函数
  • 16 函数实操
  • 17 选择排序
  • 18 冒泡排序
  • 19 递归算法之一
  • 20 递归算法实操
  • 21 快速排序
  • 22 汉诺塔游戏
  • 23 递推算法
  • 24 分治算法
  • 25 集合与组合
  • 26 贪心算法
  • 27 字典和键值对
  • 28 广度优先搜索算法
  • 29 数组和向量化计算
  • 30 随机和模拟
  • 31 数据可视化
  • 32 文件读取和分析
Powered by GitBook
On this page
  • 大纲
  • 数字的循环
  • 字符串的循环
  • 循环和条件的配合
  • 练习:计算数字之和
  • 练习:判断灯光问题
  • 练习:存款的计算
  • 练习:水仙花数字

Was this helpful?

8 FOR循环

重复是学习之母

大纲

  • 数字的循环

  • 字符串的循环

  • 循环和条件的配合

  • 练习:灯光的判断

  • 练习:存款的计算

  • 练习:水仙花数字

数字的循环

学校里面经常需要数数字,让我们从0数到4试一下。

print(0)
print(1)
print(2)
print(3)
print(4)
0
1
2
3
4

这样写代码很累啊,能不能有偷懒一些的写法呢?有的,因为计算机擅长的工作就是做那些重复枯燥的事,我们来试一下。

for x in range(5):
    print(x)
0
1
2
3
4

这里我们使用了FOR循环来操作,python中的循环是通过for这个关键词开始的,for和in是一起搭配使用。range是一个用于产生序列的函数。要注意的是range(5)产生的是从0开始,每次增加1的一个递增序列,因为它规定了这个序列一共有5个元素,所以它的最后一个元素是4。所以一开始的时候x等于0,然后把x打印出来,然后循环的第二次,x就等于1了。

我们在学习计数器的时候,有学习过这样的例子:鲁宾逊在荒岛上生活的时候,每天睡觉前在石头上刻一道横线,今天看石头上有9道横线,算一算如果再过了5天,一共有多少条横线?

i = 9
i = i+1
i = i+1
i = i+1
i = i+1
i = i+1
print(i)
14

这种计算方式有些麻烦,而且我们发现,其中五行代码是一模一样的,能不能让计算机自动计算这些逻辑呢?我们可以用循环来处理。

i = 9
for x in range(5):
    i = i+1
print(i)
14

我们看另一个例子,鲁宾逊在荒岛上生活的时候,也用画线来记录自己打到了多少猎物,如果第一天打到了1只鸟,第二天打到了2只鸟,这样一直递增下去,第5天结束的时候一共打了多少只鸟?

n = 0
for x in range(5):
    n = n+x
print(n)
10

字符串的循环

上面是我们对于一个序列进行了循环遍历,对于字符串,也是可以的,例如:

text = "hello"
for word in text:
    print(word)
h
e
l
l
o

上例中,先定义了一个字符串,然后希望我们把每个字母单独打印出来。这是一种重复的工作,我们可以使用循环来做这个事情。

在这里循环目的就是遍历举出这个字符串中每一个字母,所以for后面跟着word变量将遍历每个字母,in后面跟着的text就是整个字符串。

总结下循环语句的写法,循环是将整体拆散成个体,再轮换处理每个个体。第一行是定义怎么循环,或者说怎么轮,in后面跟整体,for后面跟个体。第二行是定义了怎么处理个体。

循环和条件的配合

从1开始报数,一直到21,如果某个数字可以被3整除,则将这个数字打印出来。

for x in range(21):
    x = x+1
    if x%3==0:
        print(x)
3
6
9
12
15
18
21

因为range从0开始,到20结束,所以需要每一次都将x加一个1。

还有一种更方便的作法是让range从1开始

for x in range(1,22):
    if x%3==0:
        print(x)
3
6
9
12
15
18
21

可以通过问号来输出range这个命令的帮助信息,可以看到它有三个参数,start, stop, step

?range

练习:计算数字之和

计算出从1开始到100为止的所有数字之和。

x_sum = 0
for x in range(1,101):
    x_sum = x_sum+x
print(x_sum)
5050

练习:判断灯光问题

小明家里的灯是用线来拉的,拉一下就开,再拉一下就关,如果调皮的小明连续拉了5下,这时是开还是关?(最开始灯是关着的)

light = False
for x in range(5):
    light = not light

if light:
    print("灯亮着")
else:
    print("灯灭了")
灯亮着

练习:存款的计算

假设你在银行里存了1万元,年收益率是10%,第一年后的本金以及收益和是1.1万元,第二年后的本金以及收益之和1.21万元,这样存10年之后,会有多少钱?

x = 10000
rate = 0.1
for i in range(10):
    x = x + x*rate
print(x)
25937.424601000006

练习:水仙花数字

水仙花数字是一个三位数字,每个位数上的数字的立方和等于它自己,例如135,1的立方+5的立方+3的立方=153,找出一千以内的所有水仙花数字

for x in range(100,1000):
    bai = x//100
    shi = x//10%10
    ge = x%10
    if bai**3 + shi**3 + ge**3 ==x:
        print(x)
153
370
371
407
Previous7 条件判断实操Next9 循环和列表

Last updated 4 years ago

Was this helpful?