Python学习笔记


文章目录

  • Python学习笔记
  • 第五站 转圈圈
  • 1. range()函数的使用
  • 2. while循环
  • 3. for-in循环
  • 4. break、continue与else语句
  • 5. 嵌套循环
  • 6. 本章作业





第五站 转圈圈

1. range()函数的使用

内置函数就是前面不需要添加任何前缀,可以直接使用的函数。range()函数是Python中的内置函数,用于生成一个整数序列,其返回值是一个迭代器对象range()函数常用于for循环中遍历的对象。下面是创建range对象的三种方式:

  1. range(stop):创建一个[0,stop)之间的整数序列,步长为1。
  2. range(start,stop):创建一个[start,stop)之间的整数序列,步长为1。
  3. 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]

注:innot in判断整数序列中是否存在(不存在)指定的整数。

2. while循环

反复做同一件事情的情况,称为循环。Python中的循环分为whilefor-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('对不起,三次均输入错误,请联系后台管理员')
  • 运行结果略。