赞
踩
如果在程序中我们需要 重复的执行某条或某些指令,比如控制机器人踢足球,如果机器人持球而且还没有进入射门范围,那么我们就要一直发出让机器人向球门方向奔跑的指令,这种代码结构我们叫做 “循环结构”。
Python中构造循环结构有两种方式,一种是 for-in
循环,一种是 while
循环。
如果 明确的知道循环执行的次数 或者 要对一个容器进行迭代,那么使用 for-in
循环更合适。
Python 的for-in
循环 比 C/C++ 中的for
循环 更抽象,是 基于 对 容器中的元素 逐个迭代,这个容器可以是有下标的序列(list,turple,string),也可以是没有下标的 dict,或者是其他的可迭代对象。
Python 中 for-in
循环的 一般格式:
for variable in sequence:
statements
就是 把序列sequence
中的每个元素代入变量variable
中,然后执行语句statements
。
举个例子
names = ['Bart', 'Lisa', 'Adam']
for name in names:
print("Hello," + name + "!")
# 输出
# Hello,Bart!
# Hello,Lisa!
# Hello,Adam!
for-in
循环 常常配合 range()
函数 来使用。
range([start,] stop[, step])
Python的内置函数,根据 start与stop指定的范围 以及 step设定的步长,生成一个等差数列的 生成器 (itrator),可以设置递增或者递减。
参数说明:
简单来讲,就是 左闭右开 [ , )
range()
的用法 非常灵活
>>> range(10) # 从 0 开始到 10
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1, 11) # 从 1 开始到 11
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> range(0, 30, 5) # 步长为 5
[0, 5, 10, 15, 20, 25]
>>> range(0, 10, 3) # 步长为 3
[0, 3, 6, 9]
>>> range(0, -10, -1) # 倒序
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> range(0)
[]
>>> range(1, 0)
[]
for-in
循环中range()
的常见用法
# 循环10次
for i in range(10):
...
# 遍历一个列表
for i in range(len(alist)):
print(alist[i])
如果你在遍历序列时,需要同时获取下标和值,可以使用enumerate()
函数
for i in range(len(nums)):
print(i, nums[i])
print("------")
for i, num in enumerate(nums):
print(i, num)
如果 不知道具体的循环次数,使用while循环更合适。
while循环 通过一个 条件表达式 来控制循环,表达式的值为 True(即条件满足)则循环继续,表达式的值为 False(即条件不满足)则循环结束。
Python 中 while 语句的 一般格式:
while condition:
statements
举个例子
sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print(sum)
我们可以通过设置条件表达式永远为 Trule 来实现无限循环,比如:
while True : # 表达式永远为 true
num = int(input("输入一个数字 :"))
print ("你输入的数字是: ", num)
print ("Good bye!")
你可以使用 CTRL+C 来退出当前的无限循环。
无限循环在服务器上客户端的实时请求非常有用。
如果需要 提前结束循环,可以使用 break
语句
break
语句可以 跳出当前 for 和 while 的循环体。
n = 1
while n <= 100:
if n > 10: # 当n = 11时,条件满足,执行break语句
break # break语句会结束当前循环
print(n)
n = n + 1
print('END')
执行上面的代码可以看到,打印出1~10后,紧接着打印END,程序结束。
continue
语句可以 跳过当前这次循环,直接开始进行下一次循环。
举个例子:
for i in range(0, 11):
if n % 2 == 0: # 如果n是偶数,执行continue语句
continue # continue语句会直接继续下一轮循环,后续的print()语句不会执行
print(n)
上面的程序可以打印出1~10中的奇数,1,3,5,7,9。
Python 中的 pass
是空语句,它 不做任何事情,一般用于 占位,以 保持程序结构的完整性,比如
>>>while True:
... pass # 等待键盘中断 (Ctrl+C)
一、猜数字游戏
计算机出一个1~100之间的随机数由人来猜,计算机根据人猜的数字分别给出提示 大一点/小一点/猜对了
import random answer = random.randint(1, 100) counter = 0 while True: counter += 1 number = int(input('请输入: ')) if number < answer: print('大一点') elif number > answer: print('小一点') else: print('恭喜你猜对了!') break print('你总共猜了%d次' % counter) if counter > 7: print('你的智商余额明显不足')
二、输入一个正整数判断是不是素数
素数指的是只能被1和自身整除的大于1的整数。
from math import sqrt
num = int(input('请输入一个正整数: '))
end = int(sqrt(num))
is_prime = True
for x in range(2, end + 1):
if num % x == 0:
is_prime = False
break
if is_prime and num != 1:
print('%d是素数' % num)
else:
print('%d不是素数' % num)
三、打印如下所示的三角形图案
*
**
***
****
*****
*
**
***
****
*****
*
***
*****
*******
*********
row = int(input('请输入行数: ')) for i in range(row): for _ in range(i + 1): print('*', end='') print() for i in range(row): for j in range(row): if j < row - i - 1: print(' ', end='') else: print('*', end='') print() for i in range(row): for _ in range(row - i - 1): print(' ', end='') for _ in range(2 * i + 1): print('*', end='') print()
[参考资料]:
[2] 循环 - 廖雪峰的官方网站
[3] 循环结构
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。