python重复执⾏_python基础之循环
⼀、while循环
如果条件成⽴(true),重复执⾏相同操作,条件不符合,跳出循环老爸生日祝福语
while 循环条件:
循环操作
(1)while循环⽰例
电脑卡顿例:输⼊王晓明5门课程的考试成绩,计算平均成绩
妈妈朋友的女儿1 i=1# 初始化循环计数器i
2 sum=0# 初始化总成绩变量
3 while i<=5: # 从i为1开始到5,重复执⾏⼀共5次接受考试成绩、求和的操作
4 print ('请输⼊第%d门课程的考试成绩'%i) # 提⽰⽤户输⼊成绩,其中⽤到了格式化输出,%d的取值随i的值显⽰,第1门课程,第2门课程……
5 sum=sum+input() # 把⽤户输⼊的成绩赋值给sum,最后保存着5次成绩的和
6 i=i+1# 每次循环 i 都⾃增1,直到⼤于5跳出循环
7 avg=sum/(i-1) # 当第五次执⾏完i=i+1时,i为6,跳出循环,计算出sum/(i-1)的值就是平均值,并赋值给avg
8 print ('王晓明5门课程的平均成绩是%d'%avg) # 格式化输出avg的值,由于⽤了%d所以计算出的%avg的数值有⼩数也会省去,接收整数部分
别人眼中的我(2)嵌套while循环⽰例
外部循环满⾜条件后,执⾏代码开始执⾏内部循环,等内部循环全部执⾏完毕,如果还满⾜外部循环条件,则外部循环再次执⾏,依次类推,直到跳出外层循环。
例:分别输⼊两个学⽣的5门成绩,并分别计算平均成绩
1 j=1# 定义外部循环计数器初始值
2 prompt='请输⼊学⽣姓名'# 定义字符串变量,在⽤户输⼊时调⽤此变量可以减少敲汉字的⿇烦
3 while j<=2: # 定义外部循环为执⾏两次
4 sum=0# 定义成绩初始值,之所以定义在这⾥,是为了当第⼆个学⽣输⼊成绩时可以让sum初始化为0,重新接收新学⽣的成绩和
5 i=1# 定义内部循环计数器初始值
6 name =raw_input(prompt) # 接收⽤户输⼊的学⽣姓名,赋值给name变量
7 while i<=5: # 定义内部函数循环5次,就是接收5门课程的成绩
8 print ('请输⼊第%d门的考试成绩:'%i) #提⽰⽤户输⼊成绩,其中⽤到了格式化输出,%d的取值随i的值显⽰,第1门课程,第2门课程……
9 sum= sum +input() # 接收⽤户输⼊的成绩,赋值给sum10 i+=1# i变量⾃增1,i变为2,继续执⾏循环,直到i等于6时,跳出循环11 avg=sum/(i-1) # 计算第⼀个学⽣的平均成绩
sum/(6-1),赋值给avg12 print name,'的平均成绩是%d\n'%avg # 输出学⽣成绩平均值13 j=j+1# 内部循环执⾏完毕后,外部循环计数器j⾃增1,变为2,再进⾏外部循环14 print '学⽣成绩输⼊完成!' # 外部循环结束,提⽰输⼊完成!
⼆、for循环
(1)使⽤for语句可以遍历全部元素,例如逐个输出字符串中的字符,逐个输出列表中的元素,元组中的元素,集合中的元素(注意赋值时各元素的顺序),字典中的键……
for letter in 'Python':
print letter
结果:
P
y
t
h
o
n
fruits=['西⽠','⽔蜜桃','葡萄']for fruit infruits:
print fruit
结果:
西⽠
⽔蜜桃
葡萄
(2)重复执⾏相同操作
使⽤range()函数创建⼀个数字列表
取值范围:从起始数字开始到结束数字之前
1 for i in range(0,5): #依次把0到4保存在变量i中
2 print 'Mr.Mangood最酷!'
3
喝酒有什么好处
4 结果:
5 Mr.Mangood最酷!
6 Mr.Mangood最酷!
7 Mr.Mangood最酷!
8 Mr.Mangood最酷!
9 Mr.Mangood最酷!
输⼊王晓明的三门考试成绩,并算出平均值
1 subjects=('linux系统','Mysql数据库','Python语⾔') # 定义⼀个元组,三个元素代表三门课程
2 sum=0# 定义变量num为初始化成绩分数
3 for i insubjects: # 把元组⾥的每⼀个元素依次赋值给i,⼀共有三次
4 print '请输⼊%s的考试成绩'%i # 提⽰输⼊成绩,运⽤了格式化字符串功能,⽤i每次取得的元素名表达出成绩名字,%s的意思是字符串
5 score =input() # 接收⽤户输⼊的成绩赋值给score
6 sum += score # 把成绩赋给sum,相当于sum = sum +score
7 avg= sum /len(subjects) # 跳出for循环后,计算平均值,这⾥⽤函数len()来计算变量subjects的长度,因为subjects定义为⼀个元组,因此长度即为元素个数3
8 print '王晓明的平均成绩为%d'%avg # 输出平均成绩9
10 结果:11 请输⼊linux系统的考试成绩12 87
13 请输⼊Mysql数据库的考试成绩14 78
15 请输⼊Python语⾔的考试成绩16 90
17 王晓明的平均成绩为85
(3)嵌套for循环
输⼊黄晓鸣、杨影2位同学,每⼈三门课程的考试成绩,计算平均成绩
1 student = (23'黄晓鸣','杨影') #定义学⽣姓名的元组
2 subjects=('linux系统','Mysql数据库','Python语⾔') #定义课程名字的元组
3 for j in student: #把j依次取两名学⽣的值进⾏两次循环
4 sum=0 #初始化成绩的值
5 print '%s同学的考试成绩'%j #打印出标题
6 for i in subjects: #定义课程循环
7 print '请输⼊%s的考试成绩'%i #提⽰输⼊其中⼀名学⽣的考试成绩
8 score = input() #接收考试成绩赋值给score
9 if score<0 or score>100: #判断分数取值范围,做提醒
10 print '注意成绩⼤⼩'
11 sum+=score #每次输⼊成绩后,sum值都累加
12 avg= sum/len(subjects) #求出平均成绩
13 print j,'的平均成绩是%d\n'%avg #打印平均成绩
14 print'完成学⽣成绩录⼊⼯作' #提⽰完成⼯作
三、循环控制
循环控制语句可以改变循环正常的执⾏顺序
循环控制语句
break语句:跳出本次循环(嵌套循环中只跳出⼀层循环)
白嫩小宝宝continue语句:跳过当前⼀轮循环体的剩余语句,重新测试循环状态,进⼊下⼀轮循环,⽐如循环的次数⼀共有5次,第四次遇到continue 了,那么不继续执⾏了,直接进⾏第5次循环判断
四、循环控制综合案例
1、需求分析
显⽰菜单
(N)ew Ur Login
(E)ntering Ur Login
(Q)uit
Enter choice:
注:输⼊字母N,接收新的登录名和密码,保存在字典中
输⼊字母E,接收登录名、密码、查找、匹配⽤户输⼊是否正确
输⼊字母Q,退出
2、执⾏步骤
(1)编制菜单
(2)使⽤while语句实现菜单项选择-外层循环
(3)使⽤while语句接收新的登录名-内层循环
(4)使⽤if语句判断菜单,执⾏相关操作
3、代码架构图
4、具体代码
1 db={}
帮助的反义词2 prompt='''
3 (N)ew ur login
4 (E)ntering ur login
5 (Q)uit
6 Enter choice:'''
7 whileTrue:8 choice = raw_input(prompt).strip()[0].lower() #读取控制台输⼊的字符串,去除其⾸尾多余的空格后,将第⼀个字符串转换为⼩写字母
9 print '\n--You picked:[%s]'%choice10 if choice not in 'neq':11 print '--invaild option:,try again--'
12 el:13 if choice == 'n':14 prompt1 = '--login desired:'
15 whileTrue:16 name =raw_input(prompt1)17 if db.has_key(name): #判断字典⾥的键值是否已经有输⼊的name值,如果有的话触发continue重新执⾏while循环,因为触发continue前prompt1被重新定义了,所以执⾏了新的name = raw_input(prompt1)
18 prompt1 = '--name taken,try another:'
分米单位19 continue
20 el:21 break
22 pwd = raw_input('password:') #验证字典中的键没有输⼊的name值后,跳出循环,把⽤户输⼊的密码赋值给pwd
23 db[name] = pwd #把值传给字典db中的name键实现字典数据的完善
24 elif choice == 'e':25 name = raw_input("login:")26 pwd = raw_input('password:')27 password = db.get(name) #登录时,接收⽤户输⼊的登录名和密码后,把字典db中name键的值赋给password
28 if password == pwd: #⽐较字典中的密码password和⽤户输⼊的密码pwd是否⼀致
29 print 'welcome',name30 el:31 print 'shibai'
32 el:33 print 'quit!'
34 break
35
View Code