Welcome!!!

F

伞兵一号,申请出战

循环结构和数据类型内置方法

循环结构和数据类型内置方法

while + else循环

# while + else连用
	当while没有被break主动结束时,才会执行else的子代码
# 语法结构
'''
while 条件:
	循环体代码
else:
	循环正常结束要执行的代码
'''
eg:
    num = 1
    while num < 10:
        print(num)
        num += 1
    else:
        print('打印完成')
# continue不会导致else不被执行,只有break会导致

死循环与while的嵌套

# 死循环就是一直运行下去的循环,死循环会极度影响电脑的性能,甚至会造成硬件的损坏
	死循环无法结束,会一直循环运行下去,并且一直占用CPU工作
eg:
    count = 10
    while True:
        count *= count
        print(count)  # 电脑顶不住了,报错KeyboardInterrupt
'''!!!不要轻易尝试!!!'''

# while嵌套
eg:
    i = 1
    while i < 10:
        j = 1
        while j <=i:
            print('%s * %s = %s'%(i,j,i*j),end='   ')
            j +=1
        print()
        i +=1
运行结果:
1 * 1 = 1   
2 * 1 = 2   2 * 2 = 4   
3 * 1 = 3   3 * 2 = 6   3 * 3 = 9   
4 * 1 = 4   4 * 2 = 8   4 * 3 = 12   4 * 4 = 16   
5 * 1 = 5   5 * 2 = 10   5 * 3 = 15   5 * 4 = 20   5 * 5 = 25   
6 * 1 = 6   6 * 2 = 12   6 * 3 = 18   6 * 4 = 24   6 * 5 = 30   6 * 6 = 36   
7 * 1 = 7   7 * 2 = 14   7 * 3 = 21   7 * 4 = 28   7 * 5 = 35   7 * 6 = 42   7 * 7 = 49   
8 * 1 = 8   8 * 2 = 16   8 * 3 = 24   8 * 4 = 32   8 * 5 = 40   8 * 6 = 48   8 * 7 = 56   8 * 8 = 64   
9 * 1 = 9   9 * 2 = 18   9 * 3 = 27   9 * 4 = 36   9 * 5 = 45   9 * 6 = 54   9 * 7 = 63   9 * 8 = 72   9 * 9 = 81  

for循环

"""
for循环可以做到的事情while循环都可以做到!!! 
	但是for循环语法更加简单 使用频率更高
"""
一般情况下涉及到循环取值的时候 都会考虑使用for循环而不是while循环
# 语法结构
'''
for 变量名 in 循环对象:  # 字符串、列表、字典、元组、集合
	循环体代码
	
每执行一次循环都将循环对象中的一个元素赋值给变量名,循环对象中的所有元素赋值完后循环结束

ps:针对for循环的变量命名,也要遵从见名知意
	如果真的没有合适的名字可以使用常用变量名i、j、k等
'''
eg:
    #打印十以内的数字
    for num in range(10):
    	print(num)
运行结果:
0
1
2
3
4
5
6
7
8
9

不同类型数据使用for循环的结果

  1. 列表

    data_list = ['伞兵一号', 18, 183.5, 100]
    for data in data_list:
        print(data)
    运行结果:
        伞兵一号
        18
        183.5
        100	
        
    # 遍历列表每个元素
    
  2. 字符串

    # for循环字符串
    str1 = 'hello world'
    for item in str1:
        print(item)
    运行结果:
        h
        e
        l
        l
        o
    
        w
        o
        r
        l
        d
        
    # 遍历字符串每个字符
    
  3. 字典

    # for循环字典
    city_dict = {'安徽':'合肥','江苏':'南京'}
    for city in city_dict:
        print(city)
    运行结果:
        安徽
    	江苏
        
    # 遍历每个键值对的key,value取不出来
    
  4. 元组

    # for循环元组
    tp = (11,22,33,44)
    for num in tp:
        print(num)
    运行结果:
        11
        22
        33
        44
    # 遍历元组每个元素
    
  5. 集合

    # for循环集合
    s = {11,22,33,44}
    for num in s:
        print(num)
    运行结果:
        33
        11
        44
        22
    # 遍历集合的每个元素,因为集合和字典的内部元素是无序的,但是字典因为使用较多,被pycharm优化了,所有字典输出是有序的,集合因为使用较少,没有优化,所以输出的顺序是乱的
    

range关键字

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

    eg:
        for i in range(5):
            print(i)
    运行结果:
        0
        1
        2
        3
        4
    #括号内只写一个数字,可以看作生成从0到括号内的数字前一个数字的列表
    
  2. range用法二

    eg:
        for i in range(1,5):
            print(i)
    运行结果:
        1
        2
        3
        4
    #括号内写了两个数字,可以看作生成从前一个数字到后一个数字的列表,顾头不顾尾
    
  3. range用法三

    eg:
        for i in range(1,5,2):
            print(i)
    运行结果:
        1
        3
    #第三个数字代表步长,即隔多少个数字取值一次
    

for循环补充

'''
for循环其实和while循环差别不大,用for循环可以实现的逻辑while都可以实现,只不过for循环相较于while循环更加简洁,所以,while循环关键字for循环也可以使用
'''
#for + break
	结束这个for循环
#for + continue
	跳过本次循环,直接开始下一次循环
#for + else
	for循环正常结束后运行else子代码
#for循环嵌套
	原理和while循环相同

如何查看数据类型的内置方法

借助编程软件自动提示,数据类型后使用英文句号即可显示全部可用方法

数据类型的内置方法

  1. 整型

    1. 类型转换
    eg:
        res = '123'
        print(type(res))
        res = int(res)
        print(type(res))
    运行结果:
        <class 'str'>
    	<class 'int'>
    '''int()可以将字符串类型转换成整型,但仅限于纯数字,否则会报错'''
    
    2. 进制转换
    eg:
        print(bin(100))  # 转换成二进制
    	print(oct(100))  # 转换成八进制
    	print(hex(100))	  # 转换成十六进制
        print(int('0b1100100',2))  # 二进制转换成十进制
        print(int('0o144',8))  # 八进制转换成十进制
        print(int('0x64',16))  # 十六进制转换成十进制
    运行结果:
        0b1100100
    	0o144
    	0x64
        100
        100
        100
    '''int()括号里直接加其他进制数也可以转换,注意不要加引号,会报错'''
    
  2. 浮点型

    1. 类型转换
    eg:
        res = '12.55'
        print(type(res))
        res = float(res)
        print(type(res))
        print(float(12))
    运行结果:
        <class 'str'>
        <class 'float'>
        12.0
    '''float()可以将字符串类型转换成浮点型,但仅限于纯数字,否则会报错,整数转化后会在小数点后加一个0'''
    
    
  3. 字符串

    1. 类型转换
    	str()可以将所有基本数据类型转换成字符串
        eg:
            print(str(11), type(str(11)))
            print(str(11.0), type(str(11.0)))
            print(str(['11', '22']), type(str(['11', '22'])))
            print(str({'安徽': '合肥', '江苏': '南京'}), type(str({'安徽': '合肥', '江苏': '南京'})))
            print(str((11, 22, 33)), type(str((11, 22, 33))))
            print(str({11, 22, 33}), type(str({11, 22, 33})))
    	运行结果:
            11 <class 'str'>
            11.0 <class 'str'>
            ['11', '22'] <class 'str'>
            {'安徽': '合肥', '江苏': '南京'} <class 'str'>
            (11, 22, 33) <class 'str'>
            {33, 11, 22} <class 'str'>
    2. 其他方法
    s = 'hello world'
    # 1. 索引取值
    # print(s[0])
    # >>>h
    ================================================
    # 2. 切片操作
    # print(s[2:4])
    # >>>ll  # 取出s[2]到s[3]的字符,顾头不顾尾
    ================================================
    # 3. 步长
    # print(s[0:5:2])
    # >>>hlo  # 取出s[0]到s[4]的字符,每两个取值间隔为2
    ================================================
    # 索引取切片扩展
    # print(s[-1])  # 索引值为负则反向取值
    # >>>d
    # print(s[-1:-5:-1])  #反向取值,步长为1,前面两个都为负,步长必须为负
    # >>>dlro
    # print(s[-5:-1])  # 从倒数第五个取到倒数第2个,顾头不顾尾
    # >>>worl
    ================================================
    # 4. 统计字符串长度
    # print(len(s))
    # >>>11
    ================================================
    # 5. 成员运算
    # print('o' in s)  # 判断是否在字符串中,返回布尔值
    # >>>True
    ================================================
    # 6. 移除字符串首位指定的字符(使用频率较高)
    # print(s.strip('d'))  # 当括号内为空时,默认移除空格
    # >>>hello worl  # 只能移除两头的,不能移除中间的
    '''ps:登录账号时用的多,可以移除用户输错的空格''' 
    ================================================
    # 7.按照指定字符切割字符串
    # data = '伞兵一号|伞兵二号|伞兵三号'
    # print(data.split('|'))
    # >>>['伞兵一号', '伞兵二号', '伞兵三号']
    # name1,name2,name3 = data.split('|')
    # print(name1,name2,name3)
    # >>>伞兵一号 伞兵二号 伞兵三号
    # print(data.split('|',1))  # 控制切几次
    # >>>['伞兵一号', '伞兵二号|伞兵三号']
    # print(data.rsplit('|',1))  # 从右边开始切
    # >>>['伞兵一号|伞兵二号', '伞兵三号']
    """split方法切割完字符串之后是一个列表"""
    ================================================
    # 8. 大小写问题
    # print(s.lower())  # 将字符串的字母全部转成小写
    # >>>hello world
    # print(s.upper())  # 将字符串的字母全部转成大写
    # >>>HELLO WORLD
    ================================================
    # 9. 判断开头结尾问题
    # print(s.startswith('h'))  # 判断是否以括号内的内容开头,返回True或者False,括号内不可以为空,但可以为多个字符
    # >>>True
    # print(s.endswith('ld'))  # 判断是否以括号内的内容结尾,返回True或者False,括号内不可以为空,但可以为多个字符
    # >>>True
    '''大小写会影响到判断结果'''
    

posted @ 2022-03-08 20:01  程序猿伞兵一号  阅读(67)  评论(0)    收藏  举报