逆袭之路——python学习笔记【day06】

今日内容概要

  • while + else
  • 死循环与while的嵌套
  • for循环基本使用
  • range关键字
  • for循环补充(break、continue、else)
  • for循环的嵌套
  • 基本数据类型及内置方法(方法有点多 前期需要记忆)
  • 今日作业

今日内容详细

一、while + else 连用

        当while没有被关键字break主动结束的情况下

        正常结束循环体代码之后会执行else的子代码

 """
    while 条件:
    	循环体代码
    else:
		循环体代码正常运行结束 则会执行该子代码块
    """

如果执行过程中被break,就不会执行else的语句

 count = 1
 while count < 10:
     if count == 4:
         break
     print(count)
     count += 1
 else:
     print('while循环寿终正寝了!!!')

二、死循环与 while 的嵌套

1、死循环

  • 死循环就是永远无法结束的循环并且一致占用CPU工作

  • 死循环有些时候会极度的影响电脑的性能 甚至会造成硬件的损坏

	count = 10
	while True:
		count *= 1

2、while 嵌套

  • while也可以和if…else…elif进行互相嵌套
	flag = True
    while flag:
        username = input('username>>>:')
        password = input('password>>>:')
        if username == 'jason' and password == '123':
            print('登录成功')
            while flag:
                cmd = input('请输入您的指令>>>:')
                if cmd == 'q':
                    print('下次光临')
                    flag = False
                print('正在执行您的指令:%s' % cmd)
        else:
            print("用户名或密码错误")

三、for 循环

  • 循环结构的第二种实现方式是for循环,for循环可以做的事情while循环都可以实现,之所以用for循环是因为在循环取值时for循环比while循环的使用更为简洁
  • 一般情况下涉及到循环取值的时候 都会考虑使用for循环而不是while循环
"""
语法结构
	for 变量名 in for循环对象:  # 字符串、列表、字典、元组、集合
		for循环的循环体代码
	每次执行都会将循环对象中的一个元素赋值给变量名

ps:针对for循环语法结构中的变量名 也应该做到见名知意
	如果真的没有合适的名字可以使用常用的变量名i、j、k、v、num、item...
"""
  1. 使用for循环依次打印出列表中所有的元素
for name in name_list:
    print(name)
  1. 循环字符串:依次取出每一个字符
for i in 'hello world':
    print(i)
  1. 循环字典(特殊):循环字典只能获取到字典的key value无法直接获取
userinfo_dict = {'username': "jason", 'age': 18, 'gender': 'male'}
for i in userinfo_dict:
    print(i)
  1. 循环元组
for i in (11, 22, 33, 44, 55):
    print(i)
  1. 循环集合:字典与集合内部的元素都是无序的
for i in {11, 22, 33, 44, 55, 66}:
    print(i)

for循环补充

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

# for循环的嵌套

请添加图片描述

四、 range关键字

  • 先说一下range方法在python2和python3中有所区分

        (1)在python2中range是直接产生一个列表 元素很多的情况下比较占用空间

        (2)在python3中range相当于哆啦A梦的口袋 不占空间但是可以取出很多数据

        (3)在python2中有一个xrange 其实就是python3里面的range,而在python3中就只有一个range了

1、 for 循环中使用 range

for i in range(101):  # 从0开始到100结束的数据集 顾头不顾尾
    print(i)

range其实是一个迭代器(后面讲) 用于产生一个数据集合 但是节省空间

用法1  括号内只写一个数字  默认从0开始  顾头不顾尾
for i in range(10):
    print(i)
用法2  括号内写两个数字  自定义起始位置 顾头不顾尾
for i in range(1, 10):
    print(i)
用法3  括号内写三个数字  第三个数字表示的是等差数列的差值  默认情况下是1
for i in range(1, 10, 2):
    print(i)

2、python爬虫

  • 什么是爬虫???
            通过编写代码去网络上爬取我们需要的数据,然后根据业务需求筛选出特定的内容
  • 今天老师所讲,以豆瓣网站为例,首先需找一个具有多页数据的网址,观察研究url是否有规律,然后找到它变化的位置,用格式化输出来进行代替,记住url变化的间隔,即可爬取每一页的网址
url_demo = 'https://movie.douban.com/top250?start=%s&filter='
for i in range(0, 250, 25):
    print(url_demo % i)

五、基本数据类型及内置方法(方法有点多 前期需要记忆)

  • 数据类型是用来记录事物状态的,而事物的状态是不断变化的,这意味着我们在开发程序时需要频繁对数据进行操作,为了提升我们的开发效率, python针对这些常用的操作,为每一种数据类型内置了一系列方法。
  • 今天老师先主要讲了三种数据类型内置方法,分别是整型内置方法浮点型内置方法字符串内置方法,下面我来详细讲解一下。

1、 整型内置方法

int整型
	1.类型转换
 	2.进制数转换
# 类型转换
# 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))

名字+括号的意思就是调用某个功能,比如

  • print(…)调用打印功能

  • int(…)调用创建整型数据的功能

  • float(…)调用创建浮点型数据的功能

2、浮点型内置方法

float浮点型
	1.类型转换
    res = float('11.11')
    print(res, type(res))  # 11.11
    res = float('11')
    print(res, type(res))  # 11.0
    float('abc')

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)))
>>> str1 = 'hello python!'


# 1.按索引取值(正向取,反向取):
# 1.1 正向取(从左往右)
>>> str1[6]
p
# 1.2 反向取(负号表示从右往左)
>>> str1[-4]
h
# 1.3 对于str来说,只能按照索引取值,不能改
>>> str1[0]='H' # 报错TypeError


# 2.切片(顾头不顾尾,步长)
# 2.1 顾头不顾尾:取出索引为0到8的所有字符
>>> str1[0:9]  
hello pyt
# 2.2 步长:0:9:2,第三个参数2代表步长,会从0开始,每次累加一个2即可,所以会取出索引0、2、4、6、8的字符
>>> str1[0:9:2]  
hlopt 
# 2.3 反向切片
>>> str1[::-1]  # -1表示从右往左依次取值
!nohtyp olleh

# 3.长度len
# 3.1 获取字符串的长度,即字符的个数,但凡存在于引号内的都算作字符)
>>> len(str1) # 空格也算字符
13

# 4.成员运算 in 和 not in	
# 4.1 int:判断hello 是否在 str1里面
>>> 'hello' in str1  
True
# 4.2 not in:判断tony 是否不在 str1里面
>>> 'tony' not in str1 
True

# 5.strip移除字符串首尾指定的字符(默认移除空格)
# 5.1 括号内不指定字符,默认移除首尾空格
>>> str1 = '  life is short!  '
>>> str1.strip()  
life is short!

# 5.2 括号内指定字符,移除首尾指定的字符
>>> str2 = '**tony**'  
>>> str2.strip('*')  
tony

# 6.切分split
# 6.1 括号内不指定字符,默认以空格作为切分符号
>>> str3='hello world'
>>> str3.split()
['hello', 'world']
# 6.2 括号内指定分隔字符,则按照括号内指定的字符切割字符串
>>> str4 = '127.0.0.1'
>>> str4.split('.')  
['127', '0', '0', '1']  # 注意:split切割得到的结果是列表数据类型

  • split方法切割完字符串之后是一个列表

六、今日作业

1.编写一个用户登录程序
	要求最多尝试失误三次 过期自动提示并可重置尝试次数
    用户登录成功之后进入内部循环 用户输入什么就打印什么 并给用户提供一个结束程序的特殊指令
    获取用户输入的用户名和密码可以处理首尾空格
    用户的用户名和密码使用变量存储 通过程序获取用户名和密码比对
    	data = 'jason|123'
2.整理今日内容及笔记
3.完成每日博客、录音、单词

解答:

# 定义变量
iii = True
count = 1
data = 'ajr|000'
# 循环
while iii:
    username = input('请输入您的用户名:').strip()
    password = input('请输入您的密码:').strip()
    # 将定义的值分割开来,给对应的用户名和密码
    u, p = data.split('|')
    # 进行判断
    if username == u and password == p:
        print('登录成功')
        # 登录成功则执行以下循环代码
        while iii:
            # 将输入的指令赋值给cmd
            cmd = input('输入您的指令:').strip()
            # 进行判断
            if cmd == 'a':
                print('下次再见!')
                # 如果输入的是a,则跳出循环
                iii = False
            # 打印你所输入的指令
            print('您输出的指令是:%s'%cmd)
    else:
        # 用户名或密码错误会提示
        print('用户名或密码错误!')
        count+=1
    # 当试了三次之后还是错误,会提示是否继续,进行判断
    if count == 4:
        # 将输入的指令赋值给ask
        ask = input('您已经尝试了三次 是否继续(y/n):')
        # 判断输入的值
        if ask == 'y':
            count = 1
        else:
            print('拜拜了您嘞!!')
            #跳出循环
            iii = False

请添加图片描述
请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

絵飛·的魚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值