python day 06 部分循环和部分数据类型内置方法
# 请听题:循环打印出0-10之间的数字 # 请听题:循环打印出0-9之间的数字,但是不打印6 count = 0 while count < 10: if count == 6: count+=1 continue # 是跳出本次循环,整体循环还在继续 print(count) count += 1
while + else
count = 0 while count < 10: if count == 3: break print(count) count += 1 else: print('嘿嘿嘿') # 当while循环内没有被人为中断(break)的时候,会执行else语句
死循环
while True: print(123) # 在程序中,死循环坚决不能出现
for循环
for循环能做的事情,while循环都能够做
for循环代码更加简介,另外,它不会出现死循环.
# 请听题: name_list = ['kevin', 'tank', 'jason', 'tony'] # 循环取出列表中每一个人名 for name in name_list: print(name) """ 语法格式: for 变量名 in 可迭代对象: # 可迭代对象:可循环的对象,字符串、列表、字典、元组等 print() 当你的变量名没有合适的名字可叫的时候,你可以采用i,j,k,v,item等代替 """ # 字典报出来的是字段的K # 循环打印字段的k和v d = {"username":'kevin', "age":18} for i in d: print(i, d[i])
range关键字
# range关键字有三种玩法,一般配合for循环使用 1. for i in range(10): # 如果只有一个参数,意思是:从0到10的整数 print(i) 2. for i in range(3, 10): # 如果有两个参数,意思是:从3到10的整数 print(i) 3. for i in range(1, 10, 2): # 如果有三个参数,意思是:从1到10的整数,步长为2 print(i) # 案例: """ https://movie.douban.com/top250?start=0&filter= 第一页的数据 https://movie.douban.com/top250?start=25&filter= 第二页的数据 https://movie.douban.com/top250?start=50&filter= 第三页的数据 https://movie.douban.com/top250?start=75&filter= 第三页的数据 https://movie.douban.com/top250?start=100&filter= 第三页的数据 https://movie.douban.com/top250?start=125&filter= 第三页的数据 ... https://movie.douban.com/top250?start=225&filter= 最后一页的数据 """ base_url = 'https://movie.douban.com/top250?start=%s&filter=' for i in range(0, 250, 25): print(base_url % i) # range在不同版本解释器中的区别 在python2中直接打印出结果 在python3中做了优化,把它变成了迭代器, 就是节省内存资源
for + break
for i in range(10): if i == 3: break print(i)
for + continue
for i in range(10): if i == 3: continue print(i)
for + else
for i in range(10): if i == 3: break# 没有人为中断就会执行else代码块 print(i) else: print('嘿嘿')
练习:打印九九乘法表
for i in range(1, 10): for j in range(1,i + 1): print('%s*%s = %s'%(i, j, i * j),end = ' ') print()
数据类型内置方法
什么是内置方法?
比如:
表格数据有公式计算、透视表、对边框的各种操作等功能
视频数据有暂停、快进、倍速等功能
就是给各个数据类型内置的功能
表现形式:int() print() 等
1. 整型
int # 进制转换 # 常见的进制数:二进制、八进制、十进制、十六进制(A b c d e f) # 二进制和十进制之间转换 # 十进制转二进制:除2取余法 # 10---》1010 # 00001010----> # res=0 * 2**7 + 0 * 2**6 + 0 * 2**5 + 0 * 2 ** 4 + 1*2**3 + 0 * 2 **2 + 1 * 2**1 + 0 * 2 ** 0===10 # int它也支持二进制转换 print(bin(10)) # 0b 1010 0b代表的就是二进制 print(oct(10)) # 0o 12 0o代表的是八进制 print(hex(10)) # 0x a 0x代表的是十六进制 # 把二进制转为十进制 print(int('0b1010', 2)) print(int('0o12', 8)) print(int('0xa', 16))
2. 浮点型
# 1.3 float同样可以用来做数据类型的转换 >>> s = '12.3' >>> res=float(s) >>> res,type(res) (12.3, <class 'float'>)
3. 字符串
# 类型转换 print(str(res), type(str(res))) print(str(1.11), type(str(1.11))) print(str('helloworld'), type(str('helloworld'))) # print(str([1, 2, 3, 4]), type(str([1, 2, 3, 4]))) print(str({'a': 1, 'b': 2}), type(str({'a': 1, 'b': 2}))) print(str((1, 2, 3)), type(str({'a': 1, 'b': 2}))) print(str(({1, 2, 3})), type(str({'a': 1, 'b': 2})))
字符串的内置方法
l = [1, 2, 3, 4] res1 = str(l) 'helloworld' print(res1[0]) print(res1[2]) res = 'helloworldhelloworldhelloworldhelloworldhelloworldadadasdasdsadhelloworldhelloworldhelloworld'# 支持索引取值 print(res[0]) print(res[1]) print(res[-1]) print(res[-2]) # 切片:顾头不顾尾 print(res[0:3]) # hel print(res[2:6]) # llow print(res[0:9:2]) # hlool 步长 # 反向切片 print(res[::-1]) print(res[0:]) #helloworld print(res[2:]) #lloworld 冒号右边不写,一直切到结束 print(res[:6]) #hellow 冒号左边不写从0开始切 print(res[::3]) #hellow 冒号左边不写从0开始切 print(res[::-1]) # dlrowolleh,翻转字符串其中一种方式 # 长度len print(len(res)) # 93 length---->len print(len([1, 2, 3, 4])) print(len({'a':1, 'b':2})) # 5.strip移除字符串首尾指定的字符(默认移除空格) res1 = '@@hello@world@@' print(res1) print(res1.strip()) # 默认什么都不写,去掉的是空格 print(res1.lstrip()) # 默认什么都不写,去掉的是空格 print(res1.rstrip()) # 默认什么都不写,去掉的是空格 print(res1.strip('@')) print(res1.lstrip('@')) print(res1.rstrip('@')) # 只能去除两边的特殊符号,中间的去不掉 # 6.切分split res1 = 'helloworld' res1 = 'kevin 18 123' res1 = 'kevin|18|male' print(res1.split()) # ['kevin', '18', '123'] 默认是空格切分,切分之后是列表的形式 print(res1.split('|')) # ['kevin', '18', 'male'] 默认是空格切分,切分之后是列表的形式 print(res1.rsplit('|', maxsplit=1)) # ['kevin', '18', 'male'] 默认是空格切分,切分之后是列表的形式