while循环和for循环

1.while+else

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循环寿终正寝了!!!')

2.死循环与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("用户名或密码错误")

3.for循环

循环结构的第二种实现方式是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)

4.rang关键字

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
    # 通过代码请求页面获取页面数据
    # 然后根据业务需求筛选出特定的内容

5.for循环补充

# for+break
	break结束本层for循环
# for+continue
	continue结束本次for循环 直接开始下一次
# for+else
	for循环正常结束之后运行else子代码
"""与while一致"""
# for循环的嵌套

6.数据类型的内置方法

如何查看数据类型的内置方法:可以借助于编程软件的自动提示 采用句点符快速查看

    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方法切割完字符串之后是一个列表"""
posted @ 2022-03-08 19:48  Gie  阅读(158)  评论(0编辑  收藏  举报