while … else 在循环条件为 false 时执行 else 语句块.但前提是当while没有被关键字break主动结束的情况下;正常结束循环体代码之后会执行else的子代码。
语法机构: """ while 条件: 循环体代码 else: 循环体代码正常运行结束 则会执行该子代码块 """ eg:count = 1 while count < 10: if count == 4: break print(count) count += 1 else: print('while循环寿终正寝了!!!')
何为死循环?在编程中,一个无法靠自身的控制终止的循环被称为死循环。因为一直占用CPU工作死循环有些时候会极度的影响电脑的性能 甚至会造成硬件的损坏
count = 10 while True: count *= 1 # while嵌套 flag = True while flag: username = input('username>>>:') password = input('password>>>:') if username == 'TONY' and password == '123': print('登录成功') while flag: cmd = input('请输入您的指令>>>:') if cmd == 'q': print('下次光临') flag = False print('正在执行您的指令:%s' % cmd) else: print("用户名或密码错误")
循环结构的第二种实现方式是for循环,for循环可以做的事情while循环都可以实现,之所以用for循环是因为在循环取值(即遍历值)时for循环比while循环的使用更为简洁,一般情况下涉及到循环取值的时候 都会考虑使用for循环而不是while循环。
""" 语法结构 for 变量名 in for循环对象: # 字符串、列表、字典、元组、集合 for循环的循环体代码 每次执行都会将循环对象中的一个元素赋值给变量名 """ ps:针对for循环语法结构中的变量名 也应该做到见名知意 如果真的没有合适的名字可以使用常用的变量名i、j、k、v、num、item... eg: name_list = ['jason', 'kevin', 'tony', 'tank', 'oscar'] # 使用while循环依次打印出列表中所有的元素 # count = 0 # while count < 5: # print(name_list[count]) # count += 1 # 使用for循环依次打印出列表中所有的元素 # for name in name_list: # print(name) # 循环字符串:依次取出每一个字符 # for i in 'hello world': # print(i) # 循环字典(特殊):循环字典只能获取到字典的key value无法直接获取 # userinfo_dict = {'username': "jason", 'age': 18, 'gender': 'male'} # for i in userinfo_dict: # print(i) # 循环元组 # for i in (11, 22, 33, 44, 55): # print(i) # 循环集合:字典与集合内部的元素都是无序的,但是字典因为比较常用,所以python中字典会自动转换成有序的。 for i in {11, 22, 33, 44, 55, 66}: print(i)
range方法在python2和python3中有所区分
在python2中range是直接产生一个列表 元素很多的情况下比较占用空间,在python2中有一个xrange 其实就是python3里面的range,
在python3中range不占空间但是可以取出很多数据,在python3中就只有一个range了。
# 循环打印0-100 # while循环 # count = 0 # while count < 101: # print(count) # count += 1 # for循环 # for i in range(101): # 从0开始到100结束的数据集 顾头不顾尾 # print(i) """range其实一个迭代器 用于产生一个数据集合 但是节省空间""" # 用法1 括号内只写一个数字 默认从0开始 顾头不顾尾 # for i in range(10): # print(i) (会输出数字0-9) # 用法2 括号内写两个数字 自定义起始位置 顾头不顾尾 # for i in range(1, 10): # print(i) (会输出数字1-9) # 用法3 括号内写三个数字 第三个数字表示的是等差数列的差值 默认情况下是1 (会输出数字1 3 5 7 9) # for i in range(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= 可以自己找一个具有多页数据的网址 研究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+break break结束本层for循环 # for+continue continue结束本次for循环 直接开始下一次 # for+else for循环正常结束之后运行else子代码 """与while一致""" # for循环的嵌套
如何查看数据类型的内置方法:可以借助于编程软件的自动提示 采用句点符快速查看
int整型:类型转换、进制数转换 类型转换: # res = int('123') # 将int方法执行之后的结果赋值给变量res # print(res, type(res)) # int # int('11.11') # int('abc') """int方法只能转换纯数字的字符串""" # 将十进制转换成其他机制 # 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('11.11') print(res, type(res)) # 11.11 res = float('11') print(res, type(res)) # 11.0 float('abc')
字符串:1.类型转换 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))) # 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))) s1 = 'hello world' # 1.索引取值 # print(s1[0]) (输出结果为 h) # 2.切片操作 # print(s1[2:4]) # 顾头不顾尾 (输出结果为ll) # 3.步长 # print(s1[2:9:1]) # 第三个参数是步长 默认是1 依次获取 # print(s1[2:9:2]) # 间隔一个取一个 (输出结果为lowr) # 索引取切片扩展 # print(s1[-1]) # 获取最后一个字符 (输出结果为d) # print(s1[-1:-5:-1]) # dlro 第三个参数还可以控制索引的方向 默认是从负到正 # print(s1[-5:-1]) # worl # 4.统计字符串中字符的个数 # print(len(s1)) # 11个 # 5.成员运算 # print('ll' in s1) # 6.移除字符串首位指定的字符(使用频率较高) # name = ' jason ' # print(len(name)) #9个 # res = name.strip() # 默认移除字符串首尾的空格 # print(res, len(res)) #jason,5个 # name1 = '$$$$jas$on$$$$' # print(name1.strip('$')) (jas$on,消除不了中间符号) # username = input('username>>>>:').strip() # if username == 'jason': # print('我想去干饭了!!!') # 7.按照指定的字符切割字符串 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'] """split方法切割完字符串之后是一个列表"""