为了让计算机计算成千上万次重复的计算,我们就需要循环语句。python的循环有两种,一种是while循环,另外一种就是for…in循环,接下来会讲到如何使用这两种循环语句。
while循环
在python中while语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务,其基本形式为:
while 判断条件:
循环体
首先执行判断条件,若条件成立,则执行循环体,循环体执行完毕则继续执行判断条件,若条件仍然成立,则继续执行循环体,循环往复直到判断条件不成立为止,退出循环。
循环体可以是单个语句或语句块,判断条件可以是任何表达式,任何非零,或非空(null)的值均为True,当判断条件为False时,结束循环。
案例:求 1+2 +3+…+100的值
sum = 0
num = 1
while num <= 100:
sum += num
num += 1
print(sum)
break语句的使用
在循环中,使用break语句可以跳出当前循环体
案例:本来循环打印1~100的数字,但是现在我要提前结束,当数字大于10的时候,打印循环结束。
n = 1
while n <= 100:
if n > 10:
break
print(n)
n += 1
print("循环结束")
continue语句的使用
在循环的过程中,可以通过continue语句,跳过当前的这次循环,直接开始下一次循环。
案例:打印1~100以内的奇数
num = 1
while num <= 100:
if num%2 == 0:
continue
print(n)
注意:break与continue只用于循环中
pass语句的使用
pass语句是空语句,是为了保持程序结构的完整性,pass不做任何事情,一般用做占位语句
一般情况下,if语句后面肯定要带有语句块,否则会报错,现在可以在if后写一个pass,保证语义的完整性,这样就不会报错,如下:
if True:
pass
else:
print("hello")
while之死循环
死循环出现的契机:当判断条件永远为真的时候,这时候这个循环就是一个死循环
while 1:
print("I am very good !")
注意:一般使用死循环的时候都会配合break与continue同时使用
案例:摇色子游戏:开始摇色子一个,提示押大还押小,若押中,则打印“你赢了!”,否则打印“你输了!”,每次游戏结束之后,询问用户游戏是否继续,若继续则继续游戏,若不继续则退出游戏
while 1:
print("开始游戏")
num = random.randrange(1,7)
ya = input("押大还是押小? 大/小")
print(num)
if ya == "大" and num > 3 or ya == "小" and num < 4:
print("你赢了!")
else:
print("你输了!")
con = input("是否继续游戏? Y/N")
if con == "Y":
continue
else:
break
while循环之else
while…else循环,具体语法如下:
while 判断条件:
循环体
else:
语句块
当循环正常执行结束的时候,会执行else下面的语句块,若循环非正常执行结束(使用break跳出循环体的时候)则不会执行else下面的语句块。
像下面这个例子,while循环是正常执行结束的,所以会执行else后的打印语句
count = 0
while count < 5:
print("%d is less than 5"%count)
count += 1
else:
print("%d is not less than 5"%count)
而这个例子因为使用了break语句,使之跳出循环,没有正常结束,所以不执行else后的语句
n = 1
while n < 100:
print(n)
n += 1
if n == 50:
break
else:
print("正常执行结束")
while之简单的语句组
如果你的while循环体中只有一条语句,你可以将该语句与while写在同一行
while 条件: 语句
如下:
while True: print("you are a good man")
for循环
for x in 序列:
循环体
使用for循环,可以将序列中的元素依次取出赋值给x,当序列中的元素全部取出的时候循环结束。
for…in循环,依次把list或者tuple中的元素或者字符串迭代出来。执行下面这段代码,会依次打印names的每一个元素
name = ['lili','Bob','Tracy']
for name in names:
print(name)
案例:计算1~1000的整数之和
在python中提供一个range()函数,创建一个可迭代对象,可以生成一个整数序列,一般用在for循环中
range([start,]stop[,step])
参数说明:
1.start:计数从start开始,默认从0开始,例如:range(5)等价于range(0, 5)
2.stop:计数到stop结束,但不包括stop。例如:range(0,5)的取值为[0,5)
3.step:步长,默认为1,例如range(0,5) 等价于range(0, 5, 1)
所以range()函数可以产生一个从[start,stop)以step为步长的序列
案例具体代码实现如下:
sum = 0
for x in range(1001):
sum += x
print(sum)
循环的嵌套使用
案例:1!+2!+3!+…+n!
分析:这边需要两个循环语句,一个for语句用来算加法,另外一个for语句用来计算阶乘
简单的说,就是在for语句中再嵌套一个for语句,效果如下:
for i in 序列1:
循环体1
for j in 序列2:
循环体2
首先进入外循环,外循环执行一次,进入内循环,内循环【执行一轮】执行结束,退出内循环,执行第二次外循环,又重新进入内循环,循环往复,直到外循环退出,整个循环才结束。
所以案例的具体实现代码如下:
res = 0
n = int(input("请输入一个整数:"))
for x in range(1,n+1):
ji = 1
for i in range(1,x+1):
ji *= i
res += ji
print(res)
for 循环使用else语句
具体语法如下:
for x in 序列:
循环体
else:
语句块
与while…else类似,当for循环正常执行结束,此时会执行我们的else下面的语句,若非正常执行结束,则不会执行else下面的语句。
案例:从控制台输入一串字符串,判断这个字符串中的字符是否全部都为数字,若是打印True,否则打印False
str1 = input("请输入一个字符串")
for x in str1:
if x >='0' and x <='9':
pass
else:
print("Flase")
break
else:
print("True")