控制流程之while,for和数据类型的内置方法

while...else组合使用

while和else的连用一般情况下用的较少,原因在于while不被break主动结束循环的情况下才会执行else,
只能正常结束循环体代码之后才会去执行else的子代码

'''
语法结构: # else与while同一缩进
    while 条件:
        while的子代码,即循环体代码(可多行)
    else:  
        如循环体代码正常运行 则执行else的子代码(可多行)
'''
  • 用例:
num = 0  # 定义变量num用于计数
while num < 10:   #循环10次
    num += 1      #每次加一
    if num == 6:  # if判断当num==6执行子代码
        continue  # 跳过本次循环 回到本层while继续执行循环体
    print(num, end=' ')
else:    # 不被break打断循环,循环体正常执行完毕 继续执行以下子代码
    print('鸡哥牛皮')   # 可正常被执行


#输出结果:1 2 3 4 5 7 8 9 10 鸡哥牛皮
  • 反例

死循环与while嵌套

死循环

    当while一直满足条件,且循环体不会被中断和强制结束循环体则会一直被cpu执行下去
    # 死循环极其占用电脑资源和考验其电脑的性能 甚至会造成硬件的损坏
  eg:
    num = 0
    while True:  # 1恒为真
        while num > 10:  # 2为False不执行下面的子代码
            if num == 6:
                break
            print(num, end=' ')
            num += 1
        else:  # 3子代码会一直打印下去
            print('鸡哥牛皮')

while嵌套

    就是再原来while的基础上再套上一层while就像套娃一样理论上可以无限嵌套下去,但一般请款下两到三层就够用了
    '''
    语法结构:
        while 条件:
            while 条件:
                while 条件:
                      ...
'''

    eg:
      num = 0
      flag = True
      while flag:  # 第一层
          while num < 10:  # 第二层
              num += 1
              while num == 6:  # 第三层
                  flag = False
              print(num)
          else:  
              print('鸡哥牛皮')

for循环

for循环的使用

  for循环的作用跟while循环差不多,for循环能做到的事情用while循环也可以做到
  但是我们还是要学习的,因为for循环的语法更加简单 平时的使用频率更高
  一般情况下涉及到循环取值的时候 都会考虑使用for循环

'''
    语法结构:
        for 变量名 in for循环的对象:  # 字符串、列表、字典、元组、集合
            循环体代码
        #每次执行都会将循环对象中的一个元素赋值给变量名
'''

for循环作用于列表

    name_list = ['jason', 'kevin', 'tony', 'tank', 'oscar']
    #使用while循环依次打印出列表中所有的元素
    count = 0 while count < 5:     
    print(name_list[count])
        count += 1
    #使用for循环依次打印出列表中所有的元素
    for name in name_list:
        print(name)
    

for循环作用于字符串:依次取出每一个字符

    for i in 'hello world':
        print(i, end='')
    # hello world 每个字母和空格都会被打印

for循环作用于字典(特殊):循环字典只能获取到字典中的k 无法直接获取v值

 dct = {'name': "aili", 'age': 18, 'hobby': 'game'}
 for i in dct:
     print(i)

for循环作用于元组

    # 跟for循环作用列表十分相似
    for i in (11, 22, 33, 44, 55):
        print(i)

for循环作用于循环集合:字典与集合内部的元素都是无序的

    for i in {11, 22, 33, 44, 55, 66}:
        print(i)

for循环补充

 """以下用法与while一致"""
    # for+break
	  break结束本层for循环
    # for+continue
	  continue结束本次for循环 直接开始下一次
    # for+else
	  for循环正常结束之后运行else子代码
    # for循环的嵌套   

拓展range关键字

就相当与一个数据集合,简单点讲就是一个用于放数据的容器 专业术语叫'迭代器' 相比与列表等更加节省空间
   # 用法1  括号内只写一个数字  默认从0开始  顾头不顾尾
   for i in range(10):  # 打印数字1~9
       print(i)

   # 用法2  括号内写两个数字  自定义起始位置 顾头不顾尾
   for i in range(1, 10):  # # 打印数字1~9
        print(i)

   # 用法3  括号内写三个数字  第三个数字表示的是等差数列的差值  默认情况下是1
   for i in range(1, 10, 2):  # 第三个数字2就是步长的意思 相当与等差数列的差值
       print(i)

数据类型的内置方法

  • 在编程软件中 采用句点符快速查看

整型int的内置方法

    # 类型转换  
      cunt = '132' # 字符串'123'
      print(cunt, type(cunt))
      cunt = int(cunt)  # 将字符串'123'转换为整型123
      print(cunt, type(cunt))
"""int方法只能转换纯数字的字符串"""


拓展: 进制数转换

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

浮点型float的内置方法

	1.类型转换
    res = float('11.11')
    print(res, type(res))  # 11.11
    res = float('11')
    print(res, type(res))  # 11.0
    float('abc')

字符串str的内置方法

    #str可以转换所有的基本数据类型
    str(要转换的类型)

 s1 = 'hello world'
 1.索引取值
 print(s1[0])
 2.切片操作
 print(s1[2:4])  # 顾头不顾尾
 3.步长
 print(s1[2:9:1])  # 第三个参数是步长 默认是1 依次获取
 print(s1[2:9:2])  # 间隔一个取一个
 索引取切片扩展
 print(s1[-1])  # 获取最好一个字符
 print(s1[-1:-5:-1])  # dlro  第三个参数还可以控制索引的方向
 print(s1[-5:-1])  # worl
 4.统计字符串中字符的个数
 print(len(s1))  # 11
 5.成员运算
 print('ll' in s1)
 6.移除字符串首位指定的字符(使用频率较高)
 name = '  jason  '
 print(len(name))
 res = name.strip()  # 默认移除字符串首尾的空格
 print(res, len(res))
 name1 = '$$$$jas$on$$$$'
 print(name1.strip('$'))
 username = input('username>>>>:').strip()
 if username == 'jason':
     print('我想去干饭了!!!')
 7.按照指定的字符切割字符串
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']
"""split方法切割完字符串之后是一个列表"""
posted @ 2022-03-08 20:48  Mr_胡萝卜须  阅读(70)  评论(0编辑  收藏  举报