1. while + else 语句
while语句与else连用时,当while语句没有被关键字 break 主动结束的情况下,并且在正常结束循环体代码块之后,才会执行else的子代码。其格式如下:
while 条件表达式1:
代码块1
else :
代码块2 #循环体代码正常运行结束之后,运行该代码块
例如,实现输出1~10这十个数字的案例。
count = 1
while count < 11:
print(count)
count += 1
else:
print('代码成功运行了 !!!')
2. 死循环与while的嵌套
2.1 > 死循环
所谓的死循环就是一个代码无限次运行,永远也无法结束的循环。死循环的出现极度影响电脑的性能,甚至更有可能会造成硬件的损坏。
例如:
count = 10
while True:
count *= 10000000
2.2 > while的嵌套
while 循环中可以嵌套 while 循环,其格式如下:
while 条件表达式1:
代码块1
...
while 条件表达式2
代码块2
...
以上格式中,首先判断外层while循的条件表示1是否成立,如果成立,则执行代码块 1,并且能够执行内层while循环。执行内层while循环时,判断条件表达式2是否成立,如果成立则执行代码块2,直到内层while循环结束。也就是说,每次执行一次外层的while语句,都要将内层的while循环重复执行一遍。
例如,使用while循环嵌套语句打印由“ * ” 组成的直角三角形,代码如下:
i = 1
while i < 5:
j = 1
while j <= i
print("*", end = "")
j += 1
print()
i += 1
运行结果如图:
*
**
***
****
3. for循环
3.1 > for循环格式
for循环相比较while循环,在功能体现上感觉更强,因为 for 循环可以做到的事情 while 循环都能做到!并且,for 循环的语法更加简单,使用频率也很高!
我们一般会在涉及到循环取值的时候,都会首先考虑使用for 循环 而不是while 循环。其格式如下:
for 变量名 in 循环的对象:
代码块1
代码块2
...
每次执行一次代码,都会将循环的对象当中的一个元素赋值给变量名。
例如,使用for语句一次打印“我是真牛逼”字符串:
com = '我是真牛逼'
for i in com:
print(i)
程序运行结果:
我
是
真
牛
逼
所以说这个循环的对象可以是任意类型比如,字符串、列表、字典、元组、集合。
3.2 > for循环与关键字组合
3.2.1>for + break
break结束本层for循环
3.2.2>for + continue
continue结束本次for循环 直接开始下一次
3.2.3>for + else
for循环正常结束之后运行else子代码
4. range() 函数
range()函数经常搭配for循环使用,它的作用类似与一个迭代器,用于产生一个数据集合。
4.1 > range() 函数在不同版本的区别
在python2 中range是直接产生一个列表,当列表中有很多个元素时就会比较的占用内存空间,但是在python3中range相当于哆啦A梦的百宝袋,既可以不占用内存空间又可以在其中取出很多的数据。在python2中有一个xrange 与python3中的range一样。
4.2 > 使用方法
4.2.1 > 用法1
括号内只写一个数字 默认从0开始 顾头不顾尾
for i in range(10)
print(i)
# 输出0 ~ 9 10个数字
4.2.2 > 用法2
括号内写两个数字 自定义起始位置 顾头不顾尾
for i in range(1, 10):
print(i)
# 输出1 ~ 9 9个数字
4.2.3 > 用法3
括号内写三个数字 第三个数字表示的是等差数列的差值 默认是1
for i in range(1, 10, 2):
print(i)
# 输出 1 3 5 7 9
5. 数据类型的内置方法
5.1 > int整型
int类型的内置有两种方法—— 1、类型转换 2、进制数转换
5.1.1 > 类型转换
int类型数据用类型转换只能时纯数字的字符串
res = int('123') # 将字符串'123'转换成int类型
print(res, type(res))
# 输出:123 int
5.1.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))
5.2 > float浮点型
5.2.1 > 类型转换
这里的方式与int整型类似
res = float('11.11') # 将字符串11.11转换成浮点型
print(res, type(res)) # 输出:11.11, float
res = float('11') # 将字符串11转换成浮点型
print(res, type(res)) # 输出:11.0,float
5.3 > 字符串类型
str可以转换所有基本数据类型,是最强大的转换了
print(str(11), type(str(11)))
print(str(11.11), type(str(11.11)))
print(str([1, 2, 3, 4]), type(str([1, 2, 3, 4])))
print(str({'name': 'jason'}), type(str({'name': 'jason'})))
print(str((1, 2, 3, 4)), type(str((1, 2, 3, 4))))
print(str({1, 2, 3, 4}), type(str({1, 2, 3, 4})))
print(str(True), type(str(True)))
输出结果如下: 已经全全部被转换成了str(字符串类型)
11 <class 'str'>
11.11 <class 'str'>
[1, 2, 3, 4] <class 'str'>
{'name': 'jason'} <class 'str'>
(1, 2, 3, 4) <class 'str'>
{1, 2, 3, 4} <class 'str'>
True <class 'str'>
6. 字符串列表的使用小技巧
定义一个字符串类型的变量 i ,给它赋值 hello word
i = 'hello world'
6.1 > 索引取值
i = 'hello world'
print(i[1])
# 输出 e 这个字符
6.2 > 切片操作
6.2.1 > 数字为正数时
i = 'hello world'
print(i[2:4]) # 这里顾头不顾尾 输出的是下标为2的字符到下标为3的字符
# 输出 ll
6.2.2 > 数字为负数时
i = 'hello world'
print(i[-1]) # 取字符串i的最后一个字符
# 输出 d
print(i[-1:-5:-1])
'''
正常的取值方向是从左往右依此取值
但是当第三个参数为-1时,控制了索引的方向
改成了从 右边往左
'''
# 输出 dlro
print(i[-5:-1]) # 取字符串i最后第五个字符 依此从左往右进行取值到最后一个字符
# 输出 worl
6.3 > 步长
i = 'hello world'
print(i[2:9]) # 第三个参数是步长 默认是1 依次获取
print(i[2:9:2]) # 间隔一个取一个
# 输出 llo wor
# 输出 lowr
6.4 > 统计字符串中的字符个数
i = 'hello world'
print(len(i)) # 统计字符串i 中的字符个数
# 输出 11
6.5 > 成员运算
i = 'hello world'
print('ll' in i) # 判断ll这两个字符是否在字符串i当中
# 输出 True
6.6 > 移除字符串首位指定的字符(使用频率较高)
定义一个变量name,给它赋值’ 大佬 '。
6.6.1 > strip() 关键字
name = ' 大佬 '
print(len(name)) # 输出字符串name 当中有几个字符
# 输出 8
gn_name = name.strip() # 默认移除字符串首尾的空格
print(gn_name, len(gn_name))
# 输出 大佬 2
6.6.1 > strip() 中加符号
strip() 中加入特定符号,可以实现对首尾特定符号的删除
name = '$$$$$$大佬$$'
print(len(name)) # 输出字符串name 当中有几个字符
# 输出 10
gn_name = name.strip('$') # 默认移除字符串首尾的空格
print(gn_name, len(gn_name))
# 输出 大佬 2
6.7 > split() 关键字
定义一个变量name,给它赋值’ 大佬|123|DBB '。
name = '大佬|123|DBB'
print(name.split('|')) # 按照特定字符(|)切割字符串name 生成一个列表
# 输出 ['大佬', '123', 'DBB']
6.7.1 > split( , maxslit=1)
按照特定字符()切割字符串name maxsplit=1 只切割一次
name = '大佬|123|DBB'
print(name.split('|', maxsplit=1)) # 按照特定字符(|)切割字符串name maxsplit=1 只切割一次,生成一个列表
# 输出 ['大佬', '123|DBB']
6.7.2> rsplit( , maxslit=1)
按照特定字符()切割字符串name maxsplit=1 只切割一次 并且从右往左开始切割
name = '大佬|123|DBB'
print(name.split('|', maxsplit=1)) # 按照特定字符(|)切割字符串name maxsplit=1 只切割一次 并且从右往左开始切割,生成一个列表
# 输出 ['大佬|123', 'DBB']