码迷,mamicode.com
首页 > 其他好文 > 详细

循环结构

时间:2018-10-15 21:19:40      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:可迭代对象   info   终端   替换   one   不用   生成   空间   说明   

循环结构

循环结构(while)

  • 格式


    while 表达式:
    语句块

    执行流程:当程序执行到while语句时,首先判断表达式的真假。若表达式的值为真,则执行缩进的语句块,然后返回while,继续判断表达式的真假,直到表达式的值为假;若表达式的值为假,则直接跳过语句块,执行后面的代码。

  • 说明:

    • 表达式:也叫循环条件

    • 语句块:也叫循环体

    • 死循环:循环条件一直成立

    • break:跳出循环

    • continue:结束本次循环,进入下次循环

    • else:缩进的语句块,在循环正常退出时执行,break退出时不执行

循环结构(for-in)

  • 说明:for-in也是一种循环,经常用于遍历可迭代的对象,如:字符串、列表、元组、字典等

  • 格式


    for x in y:
    语句块

    执行流程:x依次表示y中的一个元素,遍历结束循环就结束了。

列表生成式

  • 可迭代对象:可以迭代遍历的对象,如:列表、元组、字典

  • range函数

    # 一个对象,保存了产生连续整数的算法
    # 可以节约空间
    # print(range(10))
    # 指定区间,默认其实值为0
    print(range(2, 10))
    ?
    # 可以遍历
    for i in range(10):
        print(i)
    ?
    # 可以转换成列表
    print(list(range(10)))
  • 列表生成式

    # 列表生成式:快速生成列表
    # print([i for i in range(1, 11)])
    # print([i*2 for i in range(1, 11)])
    # print([i*i for i in range(1, 11)])
    # print([str(i) for i in range(1, 11)])
    print([i for i in range(1, 11) if i % 2 == 0])

循环嵌套

  • 循环能否嵌套?

    • 答:能

  • 循环嵌套示例

    n = int(input(请输入一个整数:))
    ?
    for i in range(n):
        for j in range(i+1):
            print(j+1, end= )
        print()

     

    练习:使用while实现上面的功能

    #1.使用while实现输入一个数,输出1  12  123  ....
    n = int(input(请输入一个整数:))
    i = 1
    while i<= n:
        i +=1
        print([s for s in range(1, i)])

     

    ?

  • 列表元素排序

    • 冒泡排序

      lt = [1, 5, 7, 3, 2]
      # 冒泡排序:从小到大
      # 第一轮:1 5 3 2 7
      # 第二轮:1 3 2 5 7
      ?
      n = len(lt)
      ?
      # 外层循环控制比较多少轮
      for i in range(n-1):
          # 内层循环控制元素的比较
          for j in range(n-i-1):
              if lt[j] > lt[j+1]:
                  # 通用交换元素
                  # temp = lt[j]
                  # lt[j] = lt[j+1]
                  # lt[j+1] = temp
                  # python特有的
                  lt[j], lt[j+1] = lt[j+1], lt[j]
      print(lt)
    • 选择排序

    思想:先取出第一个元素,然后依次与后面所有的元素比较,不合适,发生交换。
    示例:lt = [3, 5, 2, 8, 6, 4]
    第一轮:2, 5, 3, 8, 6, 4
    第二轮:2,3,5, 8, 6, 4
    第三轮:2,3, 4, 8, 6, 5

    练习:实现选择排序算法

    #先取第一个元素,然后依次与后面的所有的元素比较,不合适,发生交换
    lt = [8,5,6,7,2,1,3]
    n = len(lt)
    for  i in range(0,n-1):
        for j in range(i+1,n):
            if lt[i] > lt[j]:
             lt[i],lt[j] =lt[j], lt[i]
    print(lt)

字符串操作

  • 拼接与切割

    s = I  love you more than I can say
    # 按照指定的内容进行切割, 返回一个列表
    # spilt:指定按照什么内容进行切割
    # maxsplit:指定切割次数
    # ret = s.split(‘ ‘, maxsplit=1)
    # ret = s.split()
    # 从右边开始切割
    ret = s.rsplit( , maxsplit=1)
    print(ret)
    ?
    s = Hello\nworld
    # 安照换行进行切割
    print(s.splitlines())
    ?
    s = I love you more than I can say
    ret = s.split()
    # 字符串的拼接
    s2 = *.join(ret)
    print(s2)

     

  • 查找统计判断

    s = Hi buddy, if you have something to say, than say; if you have nothing to say, than go!
    ?
    # 子串查找,找到返回首次出现的位置(下标),找不到返回-1
    # ret = s.find(‘good‘)
    # 从后面开始查找
    # ret = s.rfind(‘if‘)
    # 统计次数
    # ret = s.count(‘if‘)
    ?
    # 判断是否以指定内容开头
    # ret = s.startswith(‘Hi‘)
    ?
    # 判断是否以指定内容结束
    ret = s.endswith(go)
    ?
    print(ret)

     

  • 转换及替换

    s = hello world!
    ?
    # 转换为大写
    print(s.upper())
    ?
    # 转换为小写
    print(s.lower())
    ?
    # 大小写转换
    print(s.swapcase())
    ?
    # 首字母大写
    print(s.capitalize())
    ?
    # 每个单词首字母大写
    print(s.title())
    ?
    # 用指定的新内容替换旧内容,不用写count,直接写数字
    print(s.replace(l, L))
  • 类型判断

    s = Hello
    ?
    # 是否是全大写
    print(s.isupper())
    ?
    # 是否是全小写
    print(s.islower())
    ?
    # 是否每个单词只有首字母大写
    print(s.istitle())
    ?
    # s = ‘123‘
    # 是否是全数字
    print(s.isdecimal())
    ?
    # 是否全是字母
    print(s.isalpha())
    ?
    s = 123
    # 是否全是数字或字母
    print(s.isalnum())

     

练习

  • 计算1~100之间所有整数的和

    #计算1~100之间所有整数的和
    i = 1
    sum = 0
    while i<=100:
        sum +=i
        i +=1
    print(1+2+3+...+100=,sum)
  • 打印字符A~Z

    #2.打印字符A-Z
    a = 65
    b =90
    for i in range(a,b+1):
        print(chr(i))
  • 循环输入10个字符,大写转小写,小写转大写,其它字符不变,然后输出

    #3.循环输入10个字符,大写转小写,小写转大写,其它字符不变,然后输出.
    lt = hello WorLd!
    i = 0
    a = len(lt)
    while i<a:
        b = lt[i]
        if b.islower():
            print(b.upper())
        else:
            print(b.lower())
        i +=1
  • 将12345转换为54321

    #当a不为零的时候,循环条件为true,执行语句块
    a = 12345
    ret = 0
    while a :
       #对a求余数,第一次循环则把5求出来
       last = a%10
       #对a求余后取整,保证下一位在下一个循环被取出
       a=a//10
        #  a , last = divmod(a,10)
       #ret这个变量,第一次将五放在各位,第二次放在十位,依次递增。
       ret = ret*10 + last
      
    #打印ret
    print(ret)

     

  • 将12345转换为‘12345‘,不要使用str

    #5.将12345转换为‘12345‘,不要使用str
    a = 12345
    b = %d % a
    print(b, type(b))
    将‘12345’转化成54321
    
    
    #将’12345‘转换成 54321
    a = 12345
    j = 0
    set = 0
    for i in a:
        j = j*10 + (ord(i)-ord(0))
    #print(j)
    while j :
        j , last = divmod(j,10)
        set = last + set * 10
    print(set)
  • 将‘12345‘转换为12345,不要使用int

    #6.将‘12345‘转换为12345,不要使用int
    s = "12345"
    a = 0
    for x in s :
       a = a*10 +( ord(x)-ord("0"))
    print(a)

     

  • 遍历列表,打印:我叫name,今年age岁,家住dizhi,电话phone

    #7.遍历列表,打印:我叫name,今年age岁,家住dizhi,电话phone
    lt = [
        {name:小王, age:18, info:[(phone, 123), (dizhi, 广州)]},
        {name:小芳, age:19, info:[(phone, 789), (dizhi, 深圳)]},
        {name:小杜, age:22, info:[(phone, 567), (dizhi, 北京)]},
        {name:小孟, age:28, info:[(phone, 000), (dizhi, 上海)]},
        {name:小乔, age:26, info:[(phone, 111), (dizhi, 河南)]},
    ]
    for j in range(len(lt)):
        print(我叫{},今年{}岁,家住{},电话{}.format(lt[j].get(name),lt[j].get(age),lt[j].get(info)[1][1],lt[j].get(info)[0][1]))
    lt = [
        {name:小王, age:18, info:[(phone, 123), (dizhi, 广州)]},
        {name:小芳, age:19, info:[(phone, 789), (dizhi, 深圳)]},
        {name:小杜, age:22, info:[(phone, 567), (dizhi, 北京)]},
        {name:小孟, age:28, info:[(phone, 000), (dizhi, 上海)]},
        {name:小乔, age:26, info:[(phone, 111), (dizhi, 河南)]},
    ]

     

  • 打印九九乘法表

    #8.打印九九乘法表
    for i in range (1,10):
      for j in range(1,i+1):
          print("%d*%d=%d" % (i,j,i*j),end=" ")
      print("")
  • 从终端输入两个整数m和n,打印m*n的表格,如:2,5,打印如下图形:

    m = int(input("请输入一个数字:"))
    n = int(input("请输入一个数字:"))
    for x in range(1,m+1):
       for y in range(1,n+1):
    ?
          print("{}".format((x-1)*n+y),end="  ")
       print()
    ?
    
    
    1 2 3 4 5
    6 7 8 9 10

     

循环结构

标签:可迭代对象   info   终端   替换   one   不用   生成   空间   说明   

原文地址:https://www.cnblogs.com/542684416-qq/p/9794657.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!