for循环、range、、基本数据内置
今日内容
-
while + else 连用
-
死循环和while的嵌套
-
for循环基本使用
-
range关键字
-
for循环补充
-
for循环的嵌套
-
基本数据类型及内置方法
一、while + else连用
当while没有关键字break主动结束的情况下,结束循环体代码之后会执行else的子代码
'''
while 条件:
执行的循环体代码
else:
循环体代码运行结束后会执行该子代码快
'''

二、死循环与while的嵌套
1、死循环
# 死循环的运行会极度影响电脑的性能,甚至会造成硬件的损坏
死循环就是永远无法结束的循环,它会一直让cpu工作
2、while的嵌套
在while循环中,可以循环体子代码中再增加一个循环体代码

三、for 循环基本使用
'''
for循环可以做到的事情,while循环都可以做到。
但是for循环语法更简单,使用效率高
'''
在一般情况下循环取值,先考虑for循环
"""
语法结构:
for 变量名 in for 循环对象
循环对象可以是:字符串、列表、字典、元组、集合
"""
'''
for循环的循环体代码每次执行都会将循环对象中的一个元素赋值给变量名
for循环中的变量名可以使用常用的i、j、k、w、num...
'''

1、for循环之字符串
# 循环字符串:依次取出每一个字符
# for i in 'hello world':
# print(i)

2、for循环之字典
循环字典(特殊):循环字典只能获取到字典的key value无法直接获取
userinfo_dict = {'username': "Owen", 'age': 18, 'gender': 'male'}
for i in userinfo_dict:
print(i)
3、for循环之元组
循环元组:字典与集合内部的元素都是无序的
# for i in (11, 22, 33, 44, 55):
# print(i)
# for i in {11, 22, 33, 44, 55, 66}:
# print(i)

四、range关键字
range方法在py2和py3中的区别
# 在python2中range是直接产生一个列表,元素很多的情况下会占内存空间
# python2中的xrange其实就是python3的range
#python3中的range像哆啦A梦的口袋,不占内存空间,但是可以取出很多数据
1、使用while循环,打印0-100
count = 0
while count < 101:
print(count)
count += 1

2、使用for循环
用法1、括号内只写一个数字,默认从0开始
顾头不顾尾
for i in range(101):
print(i)

用法2、括号内写两个数字,第一个数字定义起始位置
for i in range(1, 5):
print(i)

用法3、括号内写三个数字,第三个数字表示的是等差数列的差值,默认为1
for i in range(1, 10, 3):
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=
可以自己找一个具有多页数据的网址 研究url是否有规律
有一些网址分页是用的url
有一个使用的是内部js脚本(暂且忽略)
# url_demo = 'https://movie.douban.com/top250?start=%s&filter='
# for i in range(0, 250, 25):
# real_url = url_demo % i
# 通过代码请求页面获取页面数据
# 然后根据业务需求筛选出特定的内容
五、for循环补充
# for+break
break结束本层for循环
# for+continue
continue结束本次for循环,直接进行下一个
# for+else
for循环正常结束之后运行else子代码
六、数据类型的内置方法
# 补充:如何查看数据类型的内置方法
借助于编程软件的自动提示,采用句点符快速查看(目前只记带m开头的)

int整型
1、类型转换
res = int('123') # 将int方法执行之后的结果赋值给变量res
print(res, type(res))
'''
int方法只能转换纯数字的字符串
'''
2、进制数转换
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('13.14')
print(res,type(res))
res = float('55') # 当变量为整数时,它会自动转化成带有小数点的元素
print(res,type(res))
七、字符串内置方法
1、类型转换
str可以转换所以基本数据类型
print(str(11),type(str(11)))
print(str(11.11),type(str(11.11)))
print(str([1,2,3,4,5]),type(str([1,2,3,4,5])))
print(str({1,2,3,4,5}),type(str({1,2,3,4,5})))
print(str(True),type(str(True)))
* 补充
s1 = 'hello world'
1、索引取值
print(s1[0])
2、切片操作
print(s1[2:5]) # 顾头不顾尾
3、步长
print(s1[3:6:1]) # 第三个参数是步长,默认是1
print(s1[3:6:2]) # 现在就是搁一位取一位
4、统计字符串中字符的个数
print(len(s1)) # 11位
5、成员运算
print(' w' in s1 )
6、移除字符串首位指定的字符(使用率高)
name = ' owen '
print(len(name))
res = name.strip() # 默认移除字符串首尾的空格
print(res,len(res))
age = '???123???'
print(age.strip('?'))
username = input('username>>>:').strip()
if username == 'owen':
print('瑞斯拜')
7、按照指定的字符切割字符串
data = '熊大|熊二|光头强'
print(data.split('|')) # ['熊大', '熊二', '光头强']
""" split切割完字符串之后,是一个列表 """
name1, name2, name3 = data.split('|') # 解压赋值
print(data.split('|', maxsplit=1)) # ['熊大', '熊二|光头强']
print(data.rsplit('|', maxsplit=1)) # ['熊大|熊二', '光头强']