while与else、for循环的基本使用、死循环与while的嵌套、range关键字介绍、数据类型的内置方法(上)

今日内容总结

while与else的使用

while与else连用

      当while正常结束循环体代码时,会执行else的子代码。如果while被关键字break主动结束循环时,不会执行else之后的子代码。代码示例:

    # 使用while与else连用时,else之后的子代码能否执行的情况

    # 能执行
    count = 1
    while count < 10:
        print(count)
        count += 1
    else:
        print('while循环寿终正寝了!!!')
    # 打印结果 range(1,10)while循环寿终正寝了!!!

    # 不能执行
    count = 1
    while count < 10:
        if count == 4:
            break
        print(count)
        count += 1
    else:
        print('while循环寿终正寝了!!!')
    # 打印结果 1 2 3
    

死循环与while的嵌套

死循环

      死循环有些时候会极度影响电脑的性能,甚至会造成硬件的损坏。因为当程序死循环时,是在一直运行的,这时候CPU占用率会骤然上升,在没有停止运行死循环程序时,CPU占用达到100%后,你的电脑会变卡,同时温度升高。直至自动关机。代码示例:

  # 因为循环条件一直被满足,所以循环不会停止,也就造成了死循环
  a = 2
  while True:
      a *=2
      print(a)

while的嵌套

      while循环的嵌套,含义就是在while循环中,再套while循环,可以套多次。代码示例:

    # 简单的嵌套循环使用
    i = 0
    while i < 3:
        j = 0
        while j < 5:
            print('*', end=' ')
            j += 1
        print()
        i += 1
    # 打印结果 * * * * * /n * * * * * /n * * * * * 

for循环的基本使用

      for循环是一个简单好用的循环方法。虽然for循环可以做到的事情while循环都可以做到,但是for循环的循环语法更加的简单,使用频率也更加的高。代码示例:

    # 这里写一个while循环与for循环的比较,实现同样的循环所用到的代码。
    # while写法
    n_list = ['雷电将军', '影', '八重神子']
    i = 0
    while i < 3:
        print(n_list[i])
        i += 1
    # 打印结果 雷电将军 影 八重神子
    # for循环写法
    n_list = ['雷电将军', '影', '八重神子']
    for name in n_list:
        print(name)
    # 打印结果 雷电将军 影 八重神子

      由上代码示例可以看出,for循环可以依次打印出列表中所有的元素,并且不止是列表,字符串、列表、字典、元组、集合都可以使用类似的方法。代码示例:

    # 循环列表
    n_list = ['雷电将军', '影', '八重神子']
    for name in n_list:
        print(name)
    # 打印结果 雷电将军 影 八重神子

    # 循环字符串
    for i in 'yuan shen':
        print(i)
    # 打印结果 y u a n   s h e n

    # 循环字典(特殊):循环字典只能获取到字典的key value无法直接获取\
    n_dict = {'username' : '雷电将军','sex' : '女'}
    for i in n_dict:
        print(i)
    # 打印结果 username  sex

    # 循环元组
    for i in (1, 2, 3, 4):
        print(i)
    # 打印结果 1 2 3 4

    # 循环集合
    for i in {1, 2, 3, 4, 5}:
        print(i)
    # 打印结果 1 2 3 4 5(字典与集合都是无序的,之所以打印结果有序,是因为pycharm为了方便你,自行添加了功能让你的打印结果有序)

      因为for循环能做到的,while都能做到,同时呢,while能使用的break,continue,以及for+else也能使用,并且效果与while相同,break是结束本层for循环,continue结束本次for循环 直接开始下一次循环,for+else是for循环正常结束之后运行else子代码。同时,for循环也有嵌套。代码示例:

    # break
    for i in {1, 2, 3, 4, 5}:
        if i == 4:
            break
        print(i)
    # 打印结果 1 2 3 
    
    # continue
    for i in {1, 2, 3, 4, 5}:
        if i == 4:
            i += 1
            continue
        print(i)
    # 打印结果 1 2 3 5

    # for+else
    for i in {1, 2, 3, 4, 5}:
        print(i)
    else:
        print('666')
    # 打印结果 1 2 3 4 5 666

    # if 嵌套
    for i in range(10):
        for j in range(i):
            print(j,end=' ')
    # 打印结果  0 0 1 0 1 2 0 1 2 3 0 1 2 3 4 0 1 2 3 4 5 0 1 2 3 4 5 6 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 8 

range关键字介绍

      range方法在python2和python3中有所区分,在python2中range是直接产生一个列表 元素很多的情况下比较占用空间,在python2中有一个xrange 其实就是python3里面的range。在python3中range相当于哆啦A梦的口袋 不占空间但是可以取出很多数据,所以在python3中就只有一个range了。代码示例:

    # python2 下
    range(5)
    # 打印结果 [0, 1, 2, 3, 4]

    # python3 下
    range(5)
    # 打印结果 range(0, 5)
    

      range其实一个迭代器(后面讲) 用于产生一个数据集合 但是节省空间。并且range有三种用法,代码示例:

    # 用法1 括号内只有一个数字 默认从0开始 顾头不顾尾
    for i in range(5):
        print(i)
    # 打印结果 0 1 2 3 4

    # 用法2 括号内写两个数字  自定义起始位置 顾头不顾尾
    for i in range(2, 5):
        print(i)
    # 打印结果 2 3 4

    # 用法3  括号内写三个数字  第三个数字表示的是等差数列的差值  默认情况下是1
    for i in range(1, 10, 2):
        print(i)
    # 打印结果 1 2 5 7 9

      其实今天鸡哥还告诉了我们什么是爬虫,通过编写代码去网络上爬取我们需要的数据就是爬虫,而爬虫爬取内容的代码,就是通过我们的循环实现的。根据循环,写出我们的要求,让代码去网站上请求数据,然后爬取。

数据类型的内置方法

查看数据类型的内置方法

      可以借助于编程软件的自动提示 采用句点符快速查看

数据类型的内置方法

  1. int整型

      用法:
      1.类型转换:

  # 类型转换  int方法只能转换纯数字的字符串
  res = int('123')  # 将int方法执行之后的结果赋值给变量res
  print(res, type(res))  # int
  int('11.11')  # 报错invalid literal for int() with base 10: '11.11',因为整型里面没有小数点
  int('abc')  # 报错invalid literal for int() with base 10: 'abc', 因为整型里面没有字符串

      2.将十进制转换成其他机制:

  # 将十进制转换成其他机制 
  print(bin(100))  # 0b1100100    二进制(0b开头)
  print(oct(100))  # 0o144        八进制(0o开头)
  print(hex(100))  # 0x64         十六机制(0x开头)

      2.将其他机制转换成十进制:

  # 将十进制转换成其他机制 
  print(int('0b1100100', 2))  # 100
  print(int('0o144', 8))  # 100
  print(int('0x64', 16))  # 100
  1. float浮点型
          类型转换:
    # 类型转换 
    res = float('11.11')
    print(res, type(res))  # 11.11
    res = float('11')
    print(res, type(res))  # 11.0
    float('abc') 报错 could not convert string to float: 'abc', 因为浮点型里面没有字符串
  1. str字符串
          用法:
          1.类型转换:
        # 类型转换 
        # str可以转换所有基本数据类型
    	print(str(11), type(str(11)))  # 11 <class 'str'>
        print(str(11.11), type(str(11.11)))  # 11.11 <class 'str'>
        print(str([1, 2, 3, 4]), type(str([1, 2, 3, 4])))  # [1, 2, 3, 4] <class 'str'>
        print(str({'name': '雷神'}), type(str({'name': '雷神'})))  # {'name': '雷神'} <class 'str'>
        print(str((1, 2, 3, 4)), type(str((1, 2, 3, 4))))  # (1, 2, 3, 4) <class 'str'>
        print(str({1, 2, 3, 4}), type(str({1, 2, 3, 4})))  # {1, 2, 3, 4} <class 'str'>
        print(str(True), type(str(True)))  # True <class 'str'>

      2.字符串内置方法的使用:

    # 鸡哥YYDS
    name = 'jason YYDS'
    # 1.索引取值
    print(name[0])  # j
    
    # 2.切片操作
    print(name[1:3])  # as 顾头不顾尾

    # 3.步长
    print(name[1:9:2])  # ao Y 第三个参数是步长,间隔一个取一个,默认是1,依次获取

    # 4. 索引切片拓展
    print(name[-1])  # S 获取最后的一个字符
    print(name[-1:-5:-1])  # SDYY  第三个参数还可以控制索引的方向
    print(name[-5:-1])  #  YYD

    # 5. 统计字符串中字符的个数
    print(len(name))  # 10

    # 6.成员运算
    print('YY' in name)  # True

    # 7.移除字符串首位指定的字符(使用频率较高)
    name = '  jason   '
    print(len(name))  # 10
    res = name.strip()  # 默认移除字符串首尾的空格
    print(res, len(res))  # jason 5
    name1 = '&&&&jason&&'
    print(name1.strip('&'))  # jason
    username = input('username>>>>:').strip()
    if username == 'jason':
        print('鸡哥浦东的神')

    # 8.按照指定的字符切割字符串  split方法切割完字符串之后是一个列表
    data = 'jason|123|DBJ'
    print(data.split('|'))  # ['jason', '123', 'DBJ']
    name, pwd, hobby = data.split('|')  # 解压赋值
    print(data.split('|', maxsplit=1))  # ['jason', '123|DBJ']
    print(data.rsplit('|', maxsplit=1))  # ['jason|123', 'DBJ']

今日作业

    # 变量赋值
    username = 'jason|123'
    i = 0
    # 解压赋值,'.split' 的含义是以'|'切割
    name, password = username.split('|')
    # 设置循环,
    while i < 3:
        # 输入用户名,并且默认移除收尾字符串的空格
        uname = input('name>>>: ').strip(' ')
        # 输入密码,并且默认移除收尾字符串的空格
        pword = input('password>>>:').strip(' ')
        # 使用判断语句,判断输入的用户名和密码是否正确
        if uname == name and pword == password:
            # 当用户名和密码输入正确时,设置循环
            while True:
                # 打印登录成功提示
                print('登录成功')
                # 设置登录成功后,进入循环输入的内容,提示当输入内容为q时,退出本次登录
                j = input('请输入内容(输入 q 结束):')
                # 判断输入内容是否为'q'
                if j == 'q':
                    # 输入内容为'q'时,给i赋值为4,方便结束本层循环时,发现不满足上一层循环的条件而自动结束循环。
                    i = 4
                    # 结束本层循环
                    break
                    # 否则
                else:
                    # 打印j的内容
                    print(j)
            # 否则
        else:
            # 打印 '用户名或密码错误'
            print('用户名或密码错误')
            # 给i增量赋值
            i += 1
            # 判断i是否等于3
            if i == 3:
                # 当i=3时,提示已错误三次,是否重新输入。
                d = input('已错误三次,是否重新输入(y/n):')
                # 判断输入y时
                if d == 'y':
                    # 重置y,使y=0
                    i = 0
                    # 否则
                else:
                    # 结束本层循环
                    break

posted @ 2022-03-08 17:27  くうはくの白  阅读(491)  评论(0)    收藏  举报