2.7 分支与循环三
1. While循环
While 条件:
循环体
条件为真一直执行循环体,知道条件为假,退出循环体
循环体里可以设置条件会改变,则会在执行一定循环之后,会发生退出,python中不能执行无限循环
2. For循环 (计数器循环)
#python的循环和c语言的for循环不一样,功能要强大一点
例一:
for 目标 in 表达式:
循环体
favorite = "weivid"
for i in favorite:
print(i,end=" ") # 打印字符串中的每个字符,并空格连接
运行结果,以空格分隔:
例二:
member = ['weivid', 'wangwei', 'yijing'] #[]定义member是一个列表类型
for each in member:
print(each, len(each)) #len表示字符串的长度
运行结果:
3. range()和for循环类似
3.1 range()方法
range ([strat,], stop[,step = 1])
#BIF有三个参数,其中用[]的两个表示参数是可选的
#step = 1 表示第三个参数的默认值是1
range这个BIF的作用是生成一个从start参数的值,开始到stop参数的值结束的数字序列
range(5) #返回一个range(0,5),值为0,1,2,3,4不包含5
#左闭右开[0,5)
print(range(5))
list1 = list(range(5))#list()把参数生成一个列表
print(list1)#输出[0,1,2,3,4]
运行结果:
3.2 传递一个参数的range,默认从0,开始
print("传递一个参数的range(5)")
for i in range(5):
print(i, end=" ")
print()
运行结果:
3.2 传递两个参数的range
print("#传递两个参数的range(1,10):")
for j in range(1, 10):
print(j, end=" ")
print()
运行结果:
3.3 传递三个参数的range,第三个参数为步长
print("#传递三个5参数的range(1,10,2)")
for m in range(1,10,2):
print(m, end=" ")
print()
运行结果:
4. 两个关键语句
1)break语句
终止当前循环,跳出循环体
#break 当条件成立可以跳出循环体
string = "I love weivid"
answer = input("请输入weivid最想听到的一句话:")
while True:
if answer == string:
break
else:
answer = input("sorry!请重新输入(答案对了才能退出):")
print("you are goood!")
2)continue语句
终止本轮循环,进行下一轮循环,在执行下一轮循环之前,先判断条件在执行,若不正确,则退出循环
#continue
for i in range(10):
if i%2 != 0:
print(i)
continue
i += 2
print(i)
#奇数则直接打印,并退出循环体,开始下一个循环
#偶数则不满足if条件,则加2打印
运行结果:
5. 练习题
1.下面的代码片段打印多少次
for i in range(0,10,2):
print("I love weivid")
#五次
for j in 5:
print("I love weivid!!!")
#会报错,因in是成员资格运算符
2. range(10)会有哪些数?
会生成range(0,10)
list(range(0,10)) 转换为列表[0,1,2,3,4,5,6,7,8,9],不包含10
3. 一下代码片段会打印什么? #break 只能跳出一层循环
while True:
while True:
break
print(1)
print(2)
break
print(3)
运行结果:
3.什么情况下,我们需要循环体永远为真?
用于游戏实现,操作系统的运行,服务器等。
虽然永远为True,但是对于这个”死循环“,不一定是坏事,可以随时用break跳出循环
4. 学会提高代码的效率,修改一下代码片段
i = 0
string = "I love weivid"
while i < len(string):
print(i)
i += 1
#以上代码片段之所以效率低,是因为:每次循环都要使用函数len()
#修改后的如下:
i = 0
string = "I love weivid"
length = len(string)
while i < length:
print(i)
i += 1
5. 程序设计题
设计一个验证用户密码程序,用户只有三次机会输入错误,不过如果输入的内容包括
”*“,则次数不计算在内
count = 3
password = "I love weivid" #假设密码设定为:I love weivid
while count > 0:
answer = input("请输入用户密码:")
if answer == password:
print("密码正确,请进入程序")
break
elif '*' in password:
print("密码不包含”*“号,请重新输入,您还有",count,"次机会!",end=" ")
continue
else:
print("您的密码输入错误!您还有",count-1,"次机会!")
count -= 1
6. 编写一个程序,求100-999之间所有水仙花的数
如果一个三位数等于各位数字的立方和,则称这个数为水仙花,例如153 = 13 + 53 + 33
for i in range(100,999):
sumdata = 0
temp = i
while temp:
sumdata = sumdata + (temp%10)**3
temp //= 10 # 此循环是计算每个数的三位数的立方和,注意使用地板除法
if sumdata == i:
print(i)
7. 三色球问题
有红、黄、蓝三种颜色的球,其中红色 3个, 黄色 3个,蓝色 6个, 将这12个球放进盒子中,从中任意摸出8个球,编程计算各种球的颜色搭配
print("三色球:红、黄、蓝")
#red = yellow = blue = 0
for red in range(0,4):
for yellow in range(0,4):
for blue in range(2,7):
if red + yellow + blue == 8:
print(red,yellow,blue)
print("进程结束")