1. while 循环
1.1 continue
contiue可以让循环体代码直接回到条件判断处重新判断,相当于跳出本次循环
eg:
# 使用while循环打印0-10但是不打印4
num = 0
while num < 11:
if num == 4:
num += 1 # 跳出的时候将num加1到num为5,好继续下次的循环,否则会卡在4一直循环
continue # 当num为4时跳出本次循环
print(num)
num += 1
1.2 else
当while循环没有被人为中断(break)的情况下才会走else
eg:
count = 0
while count < 5:
print(count)
count += 1
else:
print("被执行了") # 结果:在打印了0-4之后,这段代码被执行了
count = 0
while count < 5:
print(count)
count += 1
break # 遇到break之后跳出了循环
else:
print("不被执行了") # 这段就没有执行
1.3 死循环
一个靠自身控制无法终止的程序叫死循环,死循环会让CPU极度繁忙
eg:
while True
print(1)
2. for 循环
2.1 基本使用
1.for循环能做到的事情 while循环都可以做到,但是for循环语法更加简洁 并且在循环取值问题上更加方便
2.for循环一般用于遍历任意可迭代对象中的元素,可迭代对象包括字符串,列表,元组,集合和字典,字典默认只能取到K
3.变量名如果没有合适的名称,可以使用i,j,k,v,item
4.结构:
for 变量 in 迭代对象:
重复执行的代码
5.eg:
name_list = ['jason', 'tony', 'kevin', 'jack', 'xxx']
# 循环打印列表中的每一个元素
# while实现
count = 0
while count < 5:
print(name_list[count])
count += 1
# for实现
for i in name_list:
print(i)
# for循环打印字符串中每个字符
for i in 'hello world'
print(i) # 每个字母都会被打印,中间的空格也回被打印
# for循环字典,默认只能取到K
d = {'username': 'jason', 'pwd': 123, 'hobby': 'read'}
for k in d:
print(k, d[k]) # 结果:前面是K值,后面是V值
2.2 range
1.第一种:一个参数,从零开始,顾头不顾尾
eg:
for i in range(10):
print(i) # 循环打印0-9
2.第二种:两个参数,自定义起始位置,顾头不顾尾
eg:
for i in range(4,10):
print(i) # 循环打印4-9
3.第三种:三个参数,第三个数字用来控制等差值
eg:
for i in range(2, 100, 10):
print(i) # 循环打印从2开始每隔10个数的值,2 12 22...92
"""
扩展:
https://movie.douban.com/top250 第一页
https://movie.douban.com/top250?start=25&filter= 第二页 每页相差25
https://movie.douban.com/top250?start=50&filter= 第三页
https://movie.douban.com/top250?start=75&filter= 第四页
"""
base_url = 'https://movie.douban.com/top250?start=%s&filter='
for i in range(0, 250, 25):
print(base_url % i) # 打印出了豆瓣top250每页的url
# range()在python2.x和python3.x返回值不同
在python2.x中range()会生成一个列表,但有个xrange()也是迭代器
在python3.x中range()是一个迭代器,相对于python2.x生成列表更加节省内存
# python2.x中的xrange()就是python3.x中的range()
2.3 break
结束本层循环
eg:
for i in range(10):
if i == 4:
break # 当i等于4的时候遇到了break,直接结束这层的for循环
print(i) # 结果是打印0-3
2.4 continue
结束本次循环
eg:
for i in range(10):
if i == 4:
continue # 当i等于4的时候,结束本次循环,不影响
print(i) # 打印0-3,5-9
2.5 else
在for循环正常结束的情况下才会被执行
eg:
for i in rnage(10):
print(i)
else:
print("这段被执行了") # 在循环打印了0-9之后,会继续执行这段代码,打印 这段被执行了
eg:
for i in range(10):
if i == 4:
break # 在循环打印了0-3之后,就被跳出了本层循环
print(i)
else:
print("这段代码没有被执行") #这段代码就没有被执行
2.6 嵌套
# for i in range(3):
# for j in range(5):
# print("*", end='')
# print()
for i in range(1, 10):
for j in range(1, i + 1):
print('%s*%s=%s' % (i, j, i * j), end=' ')
print()
3. 数据类型内置方法
3.1 整型
1.类型转换 int()
# 只能转换成纯数字,且在转换的时候只识别整数,遇到其他类型的都会报错,如小数,带字母的等
eg:
res = '123'
print(type(res)) # 输出结果是 str
int(res)
print(type(res)) # 输出结果是 int
int(123.123) # 报错,不识别小数
int(t123) # 报错,不识别除数字以外的
2.进制转换
print(bin(100)) # 将十进制的100转换成二进制 0b1100100
print(oct(100)) # 将十进制的100转换成八进制 0o144
print(hex(100)) # 将十进制的100转换成十六进制 0x64
# 0b开头为二进制数 0o开头为八进制数 0x开头为十六进制数
print(int('0b1100100', 2)) # 使用int()将0b1100100以二进制的方式转换为十进制
print(int('0o144', 8)) # 使用int()将0o144以八进制的方式转换为十进制
print(int('0x64', 16)) # 使用int()将0x64以十六进制的方式转换为十进制
3.2 浮点型
类型转换 float()
可以转换成小数,在转换的时候可以识别整数和小数,遇到其他类型的都会报错
eg:
res1 = '123.123'
res2 = '123'
print(type(res1)) # 没被转换前类型是 str
print(type(res2)) # 没被转换前类型是 str
float(res1) # 使用float()进行转换
float(res2) # 使用float()进行转换
print(type(res1)) # 转换后res1类型是整型
print(type(res2)) # 转换后res2类型是整型
print(res2) # res2的结果变成 123.0
3.3 字符串
3.3.1 类型转换 str()
任何类型都可以转换成字符串类型 str()
str(123)
str(123.123)
str(['name', 'paswd'])
str({'name':'xxx', 'passwd': 123})
...
#最终结果都会是str类型
3.3.2 索引取值
res = 'hello world!'
print(res[1]) # 结果为e
#还可以支持负数索引
print(res[-1]) # 结果为 !
3.3.3 切片操作
res = 'hello world!'
print(res[1:4]) # 结果为ell
#切片操作顾头不顾尾,左闭右开
3.3.4 步长操作
res = 'hello world!'
print(res[1:10:2]) # 结果为el ol
#先取到1到10的字符为在ello worl,同样顾头不顾尾
#再每隔两个取,结果就是el ol
# print(res[-5:-1]) # orld 顾头不顾尾
# print(res[-5👎-1]) # 方向冲突
3.3.5 len()
统计字符串内部字符的个数 len()
res = 'hello world!'
print(len(res)) # 结果为12
3.3.6 strip()
移除字符串首尾指定的字符,默认移除的是首位的空格 strip()
eg1:
name = ' jason '
print(name, len(name))
print(len(name.strip())) # 默认移除首尾的空格
eg2:
name1 = '$$jason$$'
print(name1.strip('$')) # 移除指定字符$ 结果为jason
print(name1.lstrip('$')) # 移除左边的$$ 结果为jason$$
print(name1.rstrip('$')) # 移除右边的$$ 结果为$$jason
# 在应用中,用户在输入的时候在首位手残输入了空格之后的解决办法
username = input("请输入用户名:").strip() # 用户在输入的时候前后输入了空格将不受影响
if username == 'root':
print('用户名输入正确')
else:
print("用户名输入错误")
3.3.7 split()
按照指定的字符切割字符串,该方法返回的是一个列表 split()
res = 'root|123|test'
print(res.split('|')) # ['root', '123', 'test'] 以|进行分割,返回列表
print(res.split('|', maxsplit=1)) # ['root', '123|test'] maxsplit用于控制切割的次数
print(res.rsplit('|', maxsplit=1)) # ['root|123', 'test'] 从右边开始分割