zoukankan      html  css  js  c++  java
  • 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()                  # 接收用户输入的成绩,赋值给sum
    10         i+=1                                # i变量自增1,i变为2,继续执行循环,直到i等于6时,跳出循环
    11     avg=sum/(i-1)                           # 计算第一个学生的平均成绩 sum/(6-1),赋值给avg
    12     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 in fruits:
        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 in subjects:                               # 把元组里的每一个元素依次赋值给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 User Login

    (E)ntering User Login

    (Q)uit

    Enter choice:

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

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

      输入字母Q,退出

    2、执行步骤

      (1)编制菜单

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

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

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

    3、具体代码

     1 db={}           
     2 prompt='''         
     3     (N)ew user login
     4     (E)ntering user login
     5     (Q)uit
     6 Enter choice:'''
     7 while True:         
     8     choice = raw_input(prompt).strip()[0].lower()       #读取控制台输入的字符串,去除其首尾多余的空格后,将第一个字符串转换为小写字母
     9     print '\n--You picked:[%s]'%choice      
    10     if choice not in 'neq':
    11         print '--invaild option:,try again--'
    12     else:
    13         if choice == 'n':
    14             prompt1 = '--login desired:'
    15             while True:
    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',name
    30             else:
    31                 print 'shibai'
    32         else:
    33             print 'quit!'
    34             break
    35         
    View Code
  • 相关阅读:
    37. Sudoku Solver(js)
    36. Valid Sudoku(js)
    35. Search Insert Position(js)
    34. Find First and Last Position of Element in Sorted Array(js)
    33. Search in Rotated Sorted Array(js)
    32. Longest Valid Parentheses(js)
    函数的柯里化
    俞敏洪:我和马云就差了8个字
    vue路由传值params和query的区别
    简述vuex的数据传递流程
  • 原文地址:https://www.cnblogs.com/adaicary/p/11610895.html
Copyright © 2011-2022 走看看