Python学习笔记
文章目录
- Python学习笔记
- 第五站 转圈圈
- 1. range()函数的使用
- 2. while循环
- 3. for-in循环
- 4. break、continue与else语句
- 5. 嵌套循环
- 6. 本章作业
第五站 转圈圈
1. range()函数的使用
内置函数就是前面不需要添加任何前缀,可以直接使用的函数。range()
函数是Python中的内置函数,用于生成一个整数序列,其返回值是一个迭代器对象。range()
函数常用于for循环中遍历的对象。下面是创建range对象的三种方式:
range(stop)
:创建一个[0,stop)之间的整数序列,步长为1。range(start,stop)
:创建一个[start,stop)之间的整数序列,步长为1。range(start,stop,step)
:创建一个[start,stop)之间的整数序列,步长为step。
range类型最大的优点就是不管range对象表示的整数序列有多长,所有range对象占用的内存空间都是相同的。因为仅仅需要存储start,stop和step,只有当用到range对象时,才会去计算序列中的相关元素。
下面是代码示例:
# 演示range()的三种创建方式
print('--------第一种方式,只有一个参数-------')
r1 = range(10) # 默认从0开始
print(r1, type(r1)) # 迭代器对象
print(list(r1)) # list为列表,用于查看range中的整数序列
print('--------第二种方式,有两个参数---------')
r2 = range(1,10) # 于是从0开始
print(list(r2))
print('--------第三种方式,有三个参数---------')
r3 = range(1,10,2)
print(list(r3), end='\t') # end=''表示不换行
print('r3中包括9:', 9 in r3)
# 下面演示一些特殊情况
r4 = range(0,10,-2) # 步长可以为负数
print(list(r4))
r5 = range(0,-10,-2) # 步长可以为负数
print(list(r5))
# r6 = range(0,10,2.5) # 会报错,只能是整数序列
# print(list(r6))
- 运行结果
--------第一种方式,只有一个参数-------
range(0, 10) <class 'range'>
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
--------第二种方式,有两个参数-------
[1, 2, 3, 4, 5, 6, 7, 8, 9]
--------第三种方式,有三个参数-------
[1, 3, 5, 7, 9] r3中包括9: True
[]
[0, -2, -4, -6, -8]
注:in
与 not in
判断整数序列中是否存在(不存在)指定的整数。
2. while循环
反复做同一件事情的情况,称为循环。Python中的循环分为while
、for-in
两大类。也就是说,Python中不存在do-while循环体,进一步可参考 “Python为什么不设计do-while循环结构?”。
下面是使用while的语法结构:
a = 1
while a<10:
print(a, end='\t')
a+=1
- 运行结果
1 2 3 4 5 6 7 8 9
可以看出在使用过程中,遵循“四步循环法”,即:
初始化变量
条件判断
条件执行体(循环体)
改变变量
True
False
1.初始化变量
2.条件判断
3.条件执行体
4.改变变量
退出循环
下面根据上图所示的四部循环法,展示循环求和的代码:
# 求解0~10之间的累加和
a = 0 # 1.初始化变量
sum = 0 # 存储求和的中间结果
while a<11: # 2.条件判断
sum += a # 3.条件执行体
a += 1 # 4.一定不要忘了改变循环变量
print('0~10的累加和为:', sum)
- 运行结果
0~10的累加和为: 55
下面是一道课堂练习:
a = sum = 0
while a<101:
if not (a%2):
sum += a
a += 1
print('1~100之间的偶数和为:', sum)
- 运行结果
1~100之间的偶数和为: 2550
3. for-in循环
for-in
循环(简称for循环),其中in
表达从(字符串、序列等)中依次取值,又称为遍历。for-in
遍历的对象必须是可迭代对象。目前学到的可迭代对象,一个是序列,一个是字符串。for-in的语法结构为:
for 自定义的变量 in 可迭代对象:
循环体
如果循环体内不需要访问自定义变量,可以将自定义变量替代为下划线。(只能说这个用法相当神奇)
下面演示for循环的几种用法:
# 可迭代对象:字符串
for item in 'Python':
print(item, end=' ')
print() # 换行
# 可迭代对象:序列,由range()产生的整数序列
for i in range(10):
print(i, end=' ')
print() # 换行
# 自定义变量用不到可以写成下划线
for _ in range(1,4):
print('去码头整点薯条!!')
# 之所以执行三次是因为重要的事情说三遍
# 使用for循环计算1~100之间的累加和
sum = 0
for i in range(1,101):
if not(i%2):
sum += i
print('1~100之间的偶数和为:', sum)
- 运行结果
P y t h o n
0 1 2 3 4 5 6 7 8 9
去码头整点薯条!!
去码头整点薯条!!
去码头整点薯条!!
1~100之间的偶数和为: 2550
课堂练习:水仙花数针对三位数来说,若该数的每一位的三次幂的和等于该数本身,那么就称其为水仙花数。请输出100~999之间的水仙花数。
下面是代码示例:
# 计算所有的水仙花数
for i in range(100,1000):
ones = i%10
tens = (i//10)%10
huns = i//100
# print(huns, tens, ones) # 用于验证求解是否正确
if (ones**3 + tens**3 + huns**3) == i:
print(i)
- 运行结果
153
370
371
407
4. break、continue与else语句
break
称为非正常结束循环语句,用于结束循环结构,通常与分支结构if一起使用。
下面是代码示例:
# 从键盘录入密码,最多三次
print('---------使用for循环实现---------')
for i in range(3):
code = input('请输入密码:')
if code=='8888':
print('输入正确!')
break
else:
print('密码输入错误!')
print('---------使用while循环实现---------')
i = 0
while i<3:
code = input('请输入密码:')
if code=='8888':
print('输入正确!')
break
else:
print('密码输入错误!')
i += 1
continue
语句用于结束当前循环,进入下一次循环,通常与分支结构中的if一起使用。
下面是代码示例:
'''
要求输出1~50之间所有的5的倍数
'''
print('-----------不使用continue----------')
for i in range(1,51):
if not(i%5):
print(i, end=' ')
print() # 换行
print('-----------使用continue------------')
for i in range(1,51):
if i%5:
continue
print(i, end=' ')
- 运行结果
-----------不使用continue----------
5 10 15 20 25 30 35 40 45 50
-----------使用continue------------
5 10 15 20 25 30 35 40 45 50
Python中,else
语句不仅可以配合if使用,还可以配合循环使用。若在执行循环的过程中没有遇到break
语句,就会执行else块中的内容。这样的设置对于很多场景来说非常方便。
下面是代码示例:
'''
输入密码,最多三次,三次都输错之后报警
'''
print('-------------else配合for循环------------')
for i in range(3):
pwd = input('请输入密码:')
if pwd=='8888':
print('密码正确,请进~')
break
else:
print('密码输入错误!')
else:
print('三次全部输错,请下次再试!')
print('-------------else配合while循环----------')
i = 0
while i<3:
pwd = input('请输入密码:')
i += 1
if pwd == '8888':
print('密码正确,请进~')
break
else:
print('密码输入错误!')
else:
print('三次全部输错,请下次再试!')
5. 嵌套循环
嵌套循环指的是循环结构中又嵌套了另外的完整的循环结构,其中内层循环做为外层循环的循环体执行。一般建议嵌套层数不超过3层。
下面是代码示例:
'''
1. 输出3*4的星号矩阵
'''
for i in range(3):
for j in range(4):
print('*', end=' ')
print()
'''
2. 输出九九乘法表
'''
for i in range(1,10):
for j in range(1,i+1):
print(str(j)+'*'+str(i)+'='+str(i*j),end='\t')
print()
- 运行结果
* * * *
* * * *
* * * *
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
注意嵌套循环中的break和continue遵循就近原则,只用于控制距离其最近的循环。
下面是代码示例:
print('---演示break在嵌套循环中的应用---')
for i in range(5):
for j in range(1,11):
if j%2==0:
break
print(j, end=' ')
print()
print('---演示continue在嵌套循环中的应用---')
for i in range(5):
for j in range(1,11):
if j%2==0:
continue
print(j, end=' ')
print()
- 运行结果
---演示break在嵌套循环中的应用---
1
1
1
1
1
---演示continue在嵌套循环中的应用---
1 3 5 7 9
1 3 5 7 9
1 3 5 7 9
1 3 5 7 9
1 3 5 7 9
6. 本章作业
1. 循环输出26个字母对应的ASCII码值
说明:
比如:a --> 97
下面是代码示例:
x = 97 # 代表的是a的ASCII码值
for _ in range(26):
print(chr(x),'--->', x)
x += 1
- 运行结果
a ---> 97
b ---> 98
c ---> 99
d ---> 100
e ---> 101
f ---> 102
g ---> 103
h ---> 104
i ---> 105
j ---> 106
k ---> 107
l ---> 108
m ---> 109
n ---> 110
o ---> 111
p ---> 112
q ---> 113
r ---> 114
s ---> 115
t ---> 116
u ---> 117
v ---> 118
w ---> 119
x ---> 120
y ---> 121
z ---> 122
2. 模拟用户登录
说明:在上一节输入用户名和密码的基础上,添加次数限制。
下面是代码示例:
for i in range(1,4):
user_name = input('请输入用户名:')
user_pwd = input('请输入密码:')
if user_name=='admin' and user_pwd==8888:
print('登录成功')
break
else:
print('用户名或密码不正确!!!')
if i < 3:
print(f'您还有{3-i}次机会!!!')
else:
print('对不起,三次均输入错误,请联系后台管理员')
- 运行结果略。