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
其实今天鸡哥还告诉了我们什么是爬虫,通过编写代码去网络上爬取我们需要的数据就是爬虫,而爬虫爬取内容的代码,就是通过我们的循环实现的。根据循环,写出我们的要求,让代码去网站上请求数据,然后爬取。
数据类型的内置方法
查看数据类型的内置方法
可以借助于编程软件的自动提示 采用句点符快速查看
数据类型的内置方法
- 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
- 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', 因为浮点型里面没有字符串
- 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

学习内容总结
浙公网安备 33010602011771号