来源:python中国网 时间:2019-06-04
  循环这个词体现在程序层面就是当满足某条件时一段代码反复执行,直到条件不满足退出。
       循环这种效果在计算机底层的实现原理我们不用深究,懂汇编的人可以明白(依赖jump指令)。我们先看下直观的效果。

# -*- coding: utf-8 -*-
i = 1
while i < 5 :
    print('发财啦',i)
    i += 1  # 自增 i = i+1
print('/////////////////////')
j = 1
for i in range(5): #range函数下文讲解
    print('发财啦', j)
    j += 1  # 自增 j = j+1
D:python3installpython.exe D:/python/py3script/python66.py
发财啦 1
发财啦 2
发财啦 3
发财啦 4
/////////////////////
发财啦 1
发财啦 2
发财啦 3
发财啦 4
发财啦 5

Process finished with exit code 0


  一、while循环

  while循环语句结构

      while条件表达式:

              循环体语句块

  1)while循环中,当条件表达式为真时,就会重复的执行循环体内的语句块,直到条件为假。从这个意义上看,while循环也可被当成分支语句使用,即如果条件表达式一开始就为假,则循环体部分将永远不会获得执行的机会。

  2)使用while循环时,一定要保证循环条件有变成假的时候:否则这个循环将成为一个死循环,永远无法结束循环。例如:

# -*- coding: utf-8 -*-
# 下面是一个死循环
i = 0
while i < 10 :
    print("执行循环:", i)
    i -=1
print("无法跳出的循环体")


  二、for循环

  python中for循环语句的主要作用就是访问可迭代对象(序列,迭代器,生成器,字典,集合等)中的所有元素,并在所有元素都处理之后自动的结束循环。

  for循环语句结构

       for 变量名 in 可迭代对象(字符串|范围|集合等):

            语句块

  1)for-in循环中的变量的值受for-in循环控制,该变量将会在每次循环开始时自动被赋值,该变量也被称为循环计数器,如果对该变量赋值则会改变改变量。

  2)for-in循环可用于遍历任何可选代对象。所谓可迭代对象,就是指该对象中包含一个__iter__方法,且该方法的返回值对象具有next()方法。

# -*- coding: utf-8 -*-
for i in range(5):
    i = 6
    print(i)

print('//////////////////')

for i in range(5):
    print(i)

D:python3installpython.exe D:/python/py3script/python66.py
6
6
6
6
6
//////////////////
0
1
2
3
4

Process finished with exit code 0
 


  三:range函数

  python3里range函数是用来生成一个由数字组成的列表的迭代器,它有三个参数,range(start,stop,step)和切片类似。

  参数说明:

  start:计数从start开始。默认是从0开始。例如range(5)等价于range(0,5);

  stop:计数到stop结束,但不包括stop。例如:range(0,5)是[0,1,2,3,4]没有5;

  step:步长,默认为1。例如:range(0,5)等价于range(0,5,1)。

  四:迭代器(暂时先了解,迭代器、可迭代对象、生成器等概念先知道下即可)

  1)迭代器其实就是一个实现了迭代器协议的容器对象,是一个可以记住遍历的位置的对象。

  2)迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。如果需要重复的迭代同一个对象,只能再重新创建一个新的迭代器。

  3)迭代器可以通过使用一个iter内建函数和一个序列来创建。

  4)迭代器有两个基本的方法:__next__返回容器的下一个元素,__iter__返回迭代器本身。

# -*- coding: utf-8 -*-
lis = [1,2,3]
res = iter(lis)
print(res)
print(res.__iter__())
print(res.__next__())
print(res.__next__())
print(res.__next__())
D:python3installpython.exe D:/python/py3script/python66.py
<list_iterator object at 0x00000221B1387518>
<list_iterator object at 0x00000221B1387518>
1
2
3

Process finished with exit code 0

  五、for、while循环应用  

# -*- coding: utf-8 -*-
print("求1到100的和:")
i = 1
sum = 0
while i<=100:
    if i%2 == 0:
        sum = sum + i
    i+=1

print("1~100的累积和为%d"%sum)

print("遍历字符串和下标:")
str1 = "hello"
for i in range(len(str1)):
    print("str1[%d] = %s" % (i, str1[i]))

print("遍历字典、集合:")
# 遍历字典、集合
d = {'a': 1, 'b': 2,}
for key in d:
    print(key, d[key])

for key, val in d.items(): # items()函数先了解下
    print(key, val)

# 遍历集合
for s in set('abc'):
    print(s)

print("enumerate函数打印序列的下标和值:")
# enumerate函数打印序列的下标和值
str2 = "hello"
for i, v in enumerate(str2):
    print(i, v)

lis = ['a','b','c']
for i, v in enumerate(lis):
    print(i, v) 

D:python3installpython.exe D:/python/py3script/python66.py
求1到100的和:
1~100的累积和为2550
遍历字符串和下标:
str1[0] = h
str1[1] = e
str1[2] = l
str1[3] = l
str1[4] = o
遍历字典、集合:
a 1
b 2
a 1
b 2
a
b
c
enumerate函数打印序列的下标和值:
0 h
1 e
2 l
3 l
4 o
0 a
1 b
2 c

Process finished with exit code 0