python重复执行_python基础之循环

  • Post author:
  • Post category:python


一、while循环

如果条件成立(true),重复执行相同操作,条件不符合,跳出循环

while 循环条件:

循环操作

(1)while循环示例

例:输入王晓明5门课程的考试成绩,计算平均成绩

1 i=1# 初始化循环计数器i2 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)的值就是平均值,并赋值给avg8 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() # 接收用户输入的成绩赋值给score6 sum += score # 把成绩赋给sum,相当于sum = sum +score7 avg= sum /len(subjects) # 跳出for循环后,计算平均值,这里用函数len()来计算变量subjects的长度,因为subjects定义为一个元组,因此长度即为元素个数38 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 User Login

(E)ntering User Login

(Q)uit

Enter choice:

注:输入字母N,接收新的登录名和密码,保存在字典中

输入字母E,接收登录名、密码、查找、匹配用户输入是否正确

输入字母Q,退出

2、执行步骤

(1)编制菜单

(2)使用while语句实现菜单项选择-外层循环

(3)使用while语句接收新的登录名-内层循环

(4)使用if语句判断菜单,执行相关操作

3、代码架构图

1036128-20161105200503783-59898207.png

4、具体代码

ContractedBlock.gif

ExpandedBlockStart.gif

1 db={}2 prompt=”’

3 (N)ew user login4 (E)ntering user login5 (Q)uit6 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 else: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 else: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 else:31 print ‘shibai’

32 else:33 print ‘quit!’

34 break

35

View Code