for循环结构、range方法

内容总结

  • whlie补充说明

    1、死循环

    真正死循环是一旦执行 CPU功耗会急速上升 直到系统采取紧急措施
    尽量不要让CPU长时间不断运行
    

    2、whlie循环嵌套

    重点:一个break只能结束他所在的那一层循环
    重点:有几个while的嵌套 想要一次性结束 就得写几个break
    重点:如果不想反复写break 可以使用全局标志位 牵一发而动全身
    eg:
      is_flag = True
      while is_flag:
          user = input('user>>>>:')
          pwd = input('pwd>>>:')
          if user == 'jason' and pwd == '123':
              while is_flag:
                  choice = input('请输入您的指令>>>:')
                  if choice == 'n':
                      is_flag = Flase
                  print('正在执行你的指令:%s' % choice)
          else:
             print('用户名或密码错误')
              
    
    graph TB A(is_flag = true)-->B(输入用户名和密码) B-->C(判断用户名和密码是否正确) C-->D(正确进入循环判断指令) C-->E(错误回到while条件判断处) D-->F(有q ) F-->K(将is_flag = Flase退出 条件不成立) D-->G(没有q 循环并打印指令) E-.->B
  • for循环结构

    for循环的能够做到的事情while都能做到 而for的循环语法更加简洁 并且在循环取值问题上更加方便

    1、语法结构

    for 变量名 in 带遍历数据:
    	for循环体代码
    eg:
    	res = ['jason', 'marry', 'kevin', 'tony']  # 待遍历数据
        循环打印出res中的每一个数据值
        while方法:
            count = 0
            while count < 4:
                print(res[count])
                count += 1
        for方法:
        	for i in res:
                print(i)
     for循环的特点:
        1、擅长遍历取值
        2、不需要结束条件 遍历完自动结束
     for循环结构中的变量名如何命名:
    	1、见名知意
        2、如果遍历出来的数据值没有具体意义 可以使用常用的 i j k item v 来指代变量名
     for循环的主要遍历数据类型有(常见的有:字符串、列表、元组、字典、集合)
    	eg:
            l1 = 'jason'
            for i in l1:
                print(i)  # 打印出来的是单个单个字符
            num_dict = {'name': 'jason', 'pwd': 123}
            for i in nmu_dict:
                print(i)  # 打印出来的只有键
            
    

    2、for+break

    在循环体代码中如果执行到break也会结束整个for循环
    eg:
        res = ['jason', 'kevin', 'oscer', 'marry']
        for i in res:
            print(i)
            if i == 'kevin':
                break
    

    3、for+continue

    在循环体代码中如果执行到continue也会结束当前循环直接开始下一次循环
    eg:
        res = ['jason', 'kevin', 'oscer', 'marry']
        for k in res:
            if k == 'oscer':
                continue
             print(k)
    
  • range方法

    1、range的3个使用方法

    range可以理解为是帮我们产生一个内部含有多个数字的数据
    
    第一种:一个参数  从0开始 顾头不顾尾
    for i in range(10):
        print(i)  # 打印出来的是0 1 2 3 4 5 6 7 8 9
    第二种:两个参数  自定义起始位置 顾头不顾尾
    for i in range(1, 10):
        print(i)  # 打印出来的是1 2 3 4 5 6 7 8 9
    第三种:三个参数  第三个数字为等差值 默认不写为1
    for i in range(1, 10, 2):
        print(i)  # 打印出来的是1 3 5 7 9
    range实战:
    	https://movie.douban.com/top250  第一页
        https://movie.douban.com/top250?start=25&filter=  第二页
        https://movie.douban.com/top250?start=50&filter=  第三页
        https://movie.douban.com/top250?start=75&filter=  第四页
        base_url = 'https://movie.douban.com/top250?start=%s&filter= '
        for i in range(0, 250, 25):
            print(base_url % i)
    

    ​ 2、range在Python2与python3的不同

    Python2中:
        range()  # 它产生的是一个列表 内部含有多个数值
        xrange()  # 其实就是python3中的range
    

    image

    python3中:
      range()  #类似一个工厂 不会占用多大的空间 要的话就生产
    

    image

  • 练习

    1、计算出1-100所有的数之和

    # 引入计数器
     num_count = 0
     for i in range(1, 100):
         # num_count = num_count + i
         num_count += i
     print(num_count)
    

    2、判断列表中数字2出现的次数
    l1 = [11,2,3,2,2,1,2,1,2,3,2,3,2,3,4,3,2,3,2,2,2,2,3,2]

     count = 0
     for k in l1:
         if k == 2:
             count += 1
     print(count)
    

    3.编写代码自动生成所有页网址(注意总共多少页)
    https://movie.douban.com/top250

     	https://movie.douban.com/top250
     https://movie.douban.com/top250?start=25&filter=
     https://movie.douban.com/top250?start=50&filter=
     https://movie.douban.com/top250?start=75&filter=
     base_url = 'https://movie.douban.com/top250?start=%s&filter='
     for v in range(0, 250, 25):
         print(base_url % v)
    

    4、编写代码打印出下列图形(ps:for循环嵌套)

    # *****
    # *****
    # *****
    # *****
    for i in range(4):
    for k in range(5):  #print("*****",end="")
        print('*', end='')
    print()
    

    5.时间进度条

    import time
    """
    1,\r 一般用在print()中对要打印的结果做格式化处理, 表示将光标的位置回退到本行的开头位置。
    2,其中end="",表示不换行
    3,其中%s,格式化进行输出,位置进行预留,这里预留了50个字符
    """
    list1 = [12,23,34,45,56,67,78,89]
    j = 1
    leng = len(list1)
    for i in list1:
      time.sleep(0.5)
      percent = j / leng
      strvar = int(percent * 50) * "#"
      print("\r[%-50s] %d%%" % (strvar, percent * 100), end="")
      j += 1
    
posted @ 2022-09-28 16:54  小福福  阅读(95)  评论(0编辑  收藏  举报