今日学习目标:
- 理解运用while循环剩余用法
- 理解运用for循环用法
- 理解运用for循环中特殊关键词用法
- 理解运用基本数据类型及内置方法
今日学习内容:
内容简要:
- 流程控制——循环结构(while循环2.0)
- 流程控制——循环结构(for循环)
- 流程控制——循环结构(for循环——关键字)
- 基本数据类型及内置方法(方法有点多 前期需要记忆)
内容详细:
流程控制——循环结构(while循环2.0)
一. while与else连用
- npython中的while后面的else的作用是指,当while循环正常执行,中间没有break的时候,会执else后面的语句。
- 但是如果while语句中有brerak,那么就不会执行else后面的内容了。
语法结构
"""
while 条件:
循环体代码
else:
循环体代码正常运行结束 则会执行该子代码块
"""
-
加入break
代码显示
count = 1 while count < 5: if count == 4: break print(count) count += 1 else: print('while循环寿终正寝了!!!')
运行结果
-
不加入break
代码显示
count = 1 while count < 5: print(count) count += 1 else: print('while循环寿终正寝了!!!')
运行结果
二. 死循环与while的嵌套
- 1.死循环
什么是死循环?
在编程中,一个无法靠自身的控制终止的循环被称为死循环
- 1、在Python中while循环的执行条件为:While关键字后的条件语句为True因此当条件为
"while True或while 1"
时,如果没有特殊处理,那么就会一直执行执行while循环,这种就被称为死循环(不会出现条件为False的情况,无法跳出循环)- 2、因为死循环无法终止,会一直运行下去,所以我们要尽量避免出现死循环
- 3、当然,我们也可以使用break或continue关键字来终止某一循环
代码演示
n = 0
while True:
if n == 5:
break #使用break来跳出死循环
print(n)
n += 1
print("循环结束")
"""
当循环是一个死循环时,就必须使用break来指明跳出循环的条件,不然程序会一直运行下去
0
1
2
3
4
循环结束
"""
死循环就是永远无法结束的循环并且一致占用CPU工作
- 2.while的嵌套
语法结构
while 条件:
while 条件:
条件成立后执行的语句
条件成立后执行的语句
代码演示
row = 1
while row <= 9:
col = 1
while col <= row:
print("%d*%d=%d\t" % (row, col, row*col), end = "")
col += 1
print() # 单纯的换行
row += 1
"""
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
"""
1、循环嵌套结构的代码,Python解释器执行的流程为:
- ⑴当外层循环条件为True时,则执行外层循环(属于外循环的语句)
- ⑵外层循环体中包含了普通程序和内循环,当内层循环的循环条件为True时则执行内循环,直到内层循环条件为False,跳出内循环
- ⑶如果此时外层循环的条件仍为True,则返回第2步,继续执行外层循环体,直到外层循环的循环条件为False
- ⑷当内层循环的循环条件为 False,且外层循环的循环条件也为 False,则整个嵌套循环才算执行完毕
2、即:外部循环满足条件后,开始执行属于外循环的内部循环,等内部循环全部执行完毕,如果还满足外部循环条件,则外部循环再次执行,依次类推,直到跳出外层循环
3、python中的print打印函数默认自带换行,可以添加第二参数 end = " " 来阻止换行。end代表要打印字符串的最后最后一个字符,可以换成制表符或者其他的符号代替换行符而已
流程控制——循环结构(for循环)
for循环可以做到的事情while循环都可以做到,但是for循环语法更加简单 使用频率更高
一般情况下涉及到循环取值的时候 都会考虑使用for循环而不是while循环
语法结构
"""
语法结构
for 变量名 in for循环对象: # 字符串、列表、字典、元组、集合
for循环的循环体代码
每次执行都会将循环对象中的一个元素赋值给变量名
ps:针对for循环语法结构中的变量名 也应该做到见名知意
如果真的没有合适的名字可以使用常用的变量名i、j、k、v、num、item...
"""
代码演示
#for循环主要用来遍历、循环、序列、集合、字典
Fruits=['apple','orange','banana','grape']
for fruit in Fruits:
print(fruit)
print("结束遍历")
"""
循环字典(特殊):循环字典只能获取到字典的key value无法直接获取
"""
userinfo_dict = {'username': "jason", 'age': 18, 'gender': 'male'}
for i in userinfo_dict:
print(i)
"""
运行结果:
username
age
gender
"""
运行结果
for循环的嵌套类似while嵌套一样
流程控制——循环结构(for循环——关键字)
range关键字
range方法在python2和python3中有所区分
- 在python2中range是直接产生一个列表 元素很多的情况下比较占用空间
- 在python2中有一个xrange 其实就是python3里面的range
- 在python3中range相当于哆啦A梦的口袋 不占空间但是可以取出很多数据
- 在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其实一个迭代器(后面讲) 用于产生一个数据集合 但是节省空间"""
用法 | 举例 |
---|---|
括号内只写一个数字 默认从0开始 顾头不顾尾 | 图一 |
括号内写两个数字 自定义起始位置 顾头不顾尾 | 图二 |
括号内写三个数字 第三个数字表示的是等差数列的差值 默认情况下是1 | 图三 |
图一:
图二:
图三:
补充
for+break
break结束本层for循环
for+continue
continue结束本次for循环 直接开始下一次
for+else
for循环正常结束之后运行else子代码
以上用法与while一致
基本数据类型及内置方法(方法有点多 前期需要记忆)
int整型
-
1.类型转换
用法举例
res = int('123') # 将int方法执行之后的结果赋值给变量res print(res, type(res)) # int
int方法只能转换纯数字的字符串
- 2.进制数转换
用法举例
# 将十进制转换成其他机制 print(bin(100)) # 0b1100100 二进制(0b开头) print(oct(100)) # 0o144 八进制(0o开头) print(hex(100)) # 0x64 十六机制(0x开头) 将其他机制转换成十进制
float浮点型
-
类型转换
用法举例
res = float('11.11') print(res, type(res)) # 11.11 res = float('11') print(res, type(res)) # 11.0
str字符串
-
1.类型转换
用法举例
str可以转换所有基本数据类型 print(str(11), type(str(11))) # 11 <class 'str'> print(str(11.11), type(str(11.11))) # 11.11 <class 'str'> print(str([1, 2, 3, 4]), type(str([1, 2, 3, 4]))) # [1, 2, 3, 4] <class 'str'> print(str({'name': 'jason'}), type(str({'name': 'jason'}))) # {'name': 'jason'} <class 'str'> print(str((1, 2, 3, 4)), type(str((1, 2, 3, 4)))) # (1, 2, 3, 4) <class 'str'> print(str({1, 2, 3, 4}), type(str({1, 2, 3, 4}))) # {1, 2, 3, 4} <class 'str'> print(str(True), type(str(True))) # True <class 'str'>
-
2.索引取值
用法举例
s1 = 'hello world' print(s1[0]) # h
-
3.切片操作
用法举例
# 3.1 顾头不顾尾:取出索引为0到8的所有字符 >>> str1[0:9] hello pyt # 3.2 步长:0:9:2,第三个参数2代表步长,会从0开始,每次累加一个2即可,所以会取出索引0、2、4、6、8的字符 >>> str1[0:9:2] hlopt # 3.3 反向切片 >>> str1[::-1] # -1表示从右往左依次取值 !nohtyp olleh
-
4.长度len
用法举例
# 4.1 获取字符串的长度,即字符的个数,但凡存在于引号内的都算作字符) >>> len(str1) # 空格也算字符 13
-
索引取切片扩展
用法举例
print(s1[-1]) # 获取最好一个字符 print(s1[-1:-5:-1]) # dlro 第三个参数还可以控制索引的方向 print(s1[-5:-1]) # worl
-
5.循环
用法举例
>>> str5 = '今天你好吗?' >>> for line in str5: # 依次取出字符串中每一个字符 ... print(line) ... 今 天 你 好 吗 ?
-
6.成员运算
用法举例
# 6.1 int:判断hello 是否在 str1里面 >>> 'hello' in str1 True # 6.2 not in:判断tony 是否不在 str1里面 >>> 'tony' not in str1 True
-
7.移除字符串首位指定的字符(使用频率较高)
用法举例
# 7.1 括号内不指定字符,默认移除首尾空格 >>> str1 = ' life is short! ' >>> str1.strip() life is short! # 7.2 括号内指定字符,移除首尾指定的字符 >>> str2 = '**tony**' >>> str2.strip('*') tony
-
8.按照指定的字符切割字符串
用法举例
# 8.1 括号内不指定字符,默认以空格作为切分符号 >>> str3='hello world' >>> str3.split() ['hello', 'world'] # 8.2 括号内指定分隔字符,则按照括号内指定的字符切割字符串 >>> str4 = '127.0.0.1' >>> str4.split('.') ['127', '0', '0', '1'] # 注意:split切割得到的结果是列表数据类型
今日学习时间:
这里统计计划学习的时间
1、 上午8:30~12:30
2、 下午2:30~5:30
3、 晚上6:30~9:30
今日学习产出:
这里统计学习计划的总量
- 1、 技术笔记 1遍
- 2、CSDN 技术博客 1篇
- 3、每日录音
- 4、课后作业
1.编写一个用户登录程序
要求最多尝试失误三次 过期自动提示并可重置尝试次数
用户登录成功之后进入内部循环 用户输入什么就打印什么 并给用户提供一个结束程序的特殊指令
获取用户输入的用户名和密码可以处理首尾空格
用户的用户名和密码使用变量存储 通过程序获取用户名和密码比对
data = ‘jason|123’
is_tag = True
count = 1
data = 'jason|123'
while is_tag:
username = input('请输入您的用户名:').strip()
password = input('请输入您的密码:').strip()
Reality_username, Reality_password = data.split('|')
if username == Reality_username and password == Reality_password:
print('登录成功')
while is_tag:
cmd = input('输入您的指令:').strip()
print('正在执行您输入的命令(%s)....' % cmd)
if cmd == 'byb':
print('下次再见!')
is_tag = False
else:
print('用户名或密码错误!')
count += 1
if count == 4:
ask = input('您已经尝试了三次 是否继续(y/n):')
if ask == 'y':
count = 1
else:
is_tag = False
print('拜拜了您嘞!!')