Python学习笔记

文章目录

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

课程笔记参考B站视频: Python全栈开发教程。


第五站 转圈圈

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

可以看出在使用过程中,遵循“四步循环法”,即:

初始化变量
条件判断
条件执行体(循环体)
改变变量

#mermaid-svg-7CwUlXbrepPRFhUM {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-7CwUlXbrepPRFhUM .error-icon{fill:#552222;}#mermaid-svg-7CwUlXbrepPRFhUM .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-7CwUlXbrepPRFhUM .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-7CwUlXbrepPRFhUM .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-7CwUlXbrepPRFhUM .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-7CwUlXbrepPRFhUM .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-7CwUlXbrepPRFhUM .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-7CwUlXbrepPRFhUM .marker{fill:#333333;stroke:#333333;}#mermaid-svg-7CwUlXbrepPRFhUM .marker.cross{stroke:#333333;}#mermaid-svg-7CwUlXbrepPRFhUM svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-7CwUlXbrepPRFhUM .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-7CwUlXbrepPRFhUM .cluster-label text{fill:#333;}#mermaid-svg-7CwUlXbrepPRFhUM .cluster-label span{color:#333;}#mermaid-svg-7CwUlXbrepPRFhUM .label text,#mermaid-svg-7CwUlXbrepPRFhUM span{fill:#333;color:#333;}#mermaid-svg-7CwUlXbrepPRFhUM .node rect,#mermaid-svg-7CwUlXbrepPRFhUM .node circle,#mermaid-svg-7CwUlXbrepPRFhUM .node ellipse,#mermaid-svg-7CwUlXbrepPRFhUM .node polygon,#mermaid-svg-7CwUlXbrepPRFhUM .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-7CwUlXbrepPRFhUM .node .label{text-align:center;}#mermaid-svg-7CwUlXbrepPRFhUM .node.clickable{cursor:pointer;}#mermaid-svg-7CwUlXbrepPRFhUM .arrowheadPath{fill:#333333;}#mermaid-svg-7CwUlXbrepPRFhUM .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-7CwUlXbrepPRFhUM .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-7CwUlXbrepPRFhUM .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-7CwUlXbrepPRFhUM .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-7CwUlXbrepPRFhUM .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-7CwUlXbrepPRFhUM .cluster text{fill:#333;}#mermaid-svg-7CwUlXbrepPRFhUM .cluster span{color:#333;}#mermaid-svg-7CwUlXbrepPRFhUM div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-7CwUlXbrepPRFhUM :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

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 += aa += 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%10tens = (i//10)%10huns = 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('输入正确!')breakelse:print('密码输入错误!')print('---------使用while循环实现---------')
i = 0
while i<3:code = input('请输入密码:')if code=='8888':print('输入正确!')breakelse: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:continueprint(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('密码正确,请进~')breakelse:print('密码输入错误!')
else:print('三次全部输错,请下次再试!')
print('-------------else配合while循环----------')
i = 0
while i<3:pwd = input('请输入密码:')i += 1if pwd == '8888':print('密码正确,请进~')breakelse: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:breakprint(j, end=' ')print()
print('---演示continue在嵌套循环中的应用---')
for i in range(5):for j in range(1,11):if j%2==0:continueprint(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('登录成功')breakelse:print('用户名或密码不正确!!!')if i < 3:print(f'您还有{3-i}次机会!!!')else:print('对不起,三次均输入错误,请联系后台管理员')
  • 运行结果略。

Python学习笔记:第五站 转圈圈相关推荐

  1. python学习笔记(五岁以下儿童)深深浅浅的副本复印件,文件和文件夹

    python学习笔记(五岁以下儿童) 深拷贝-浅拷贝 浅拷贝就是对引用的拷贝(仅仅拷贝父对象) 深拷贝就是对对象的资源拷贝 普通的复制,仅仅是添加了一个指向同一个地址空间的"标签" ...

  2. python学习笔记(五)缩进

    python学习笔记(五)缩进 原作:http://www.cnblogs.com/vamei/archive/2012/05/29/2524706.html 笔记: #!/usr/bin/env p ...

  3. 5岁自学python编程-python学习笔记(五岁以下儿童)深深浅浅的副本复印件,文件和文件夹...

    python学习笔记(五岁以下儿童) 深拷贝-浅拷贝 浅拷贝就是对引用的拷贝(仅仅拷贝父对象) 深拷贝就是对对象的资源拷贝 普通的复制,仅仅是添加了一个指向同一个地址空间的"标签" ...

  4. python学习笔记(五)---替换函数

    python学习笔记(五)-替换函数 replace()函数替换内容 用法: replace('需要替换的内容','替换后的内容',替换次数) 备:如果需要替换单引号需要加'\' 例子: str = ...

  5. Python学习笔记:第二站 七十二变

    Python学习笔记 文章目录 Python学习笔记 第二站 七十二变 1. 二进制与字符编码 2. Python中的标识符与保留字 3. Python中的变量 4.Python中的数据类型 5. P ...

  6. Python学习笔记:第九站 一串连一串

    Python学习笔记 文章目录 Python学习笔记 第九站 一串连一串 1. 字符串的驻留机制 2. 字符串的常用操作 3. 字符串的比较 4. 字符串的切片操作 5. 格式化字符串 6. 字符串的 ...

  7. 【Python学习笔记】b站@同济子豪兄 用pytorch搭建全连接神经网络,对Fashion-MNIST数据集中的时尚物品进行分类

    [Python学习笔记]原作b站@同济子豪兄 用pytorch搭建全连接神经网络,对Fashion-MNIST数据集中的时尚物品进行分类 跟着b站@同济子豪兄的视频自学写的代码,内容是用pytorch ...

  8. python学习笔记(五)字符串函数二

    原文链接:http://blog.svenapps.com/post/python-xue-xi-bi-ji/python-xue-xi-bi-ji-wu-zi-fu-chuan-han-shu-er ...

  9. Python学习笔记(五)——正则表达式

    定义         正则表达式提供了功能强大.灵活又高效的方法来处理文本:快速分析大量文 本以找到特定的字符模式:提取.编辑.替换或删除文本字符串:将提取的字 符串添加到集合以生成报告.正则表达式广 ...

  10. Python学习笔记(五.数据分析 ——上)

    系列文章持续更新中- 文章目录 前言 一.相关性分析 A.获取股票价格 a.获取日K线的股票价格 b.获取每分钟的股票价格 B. 合并股票价格 C.股票价格相关性分析 二.假设检验 三.方差分析 A. ...

最新文章

  1. vue实现div多选全选功能_怎样为你的 Vue.js 单页应用提速
  2. Java 注解详解 (annotation)
  3. 手机空间定位_你或许被默默定位很久了却不知情,盘点生活中各类定位技术
  4. NHibernate学习之五:三种常见的配置方法。
  5. 微课|中学生可以这样学Python(2.3.4节):例2-1
  6. 将Excel文件数据导入到SqlServer数据库的三种方案
  7. 数据结构期末考题总结(附答案)
  8. C语言中的常量与变量
  9. win10常用快捷键合集
  10. ubuntu 20.04 设置静态ip
  11. KK 的99 条额外的建议[翻译]#yyds干货盘点#
  12. 华为鸿蒙国内厂商适配,华为再放大招!鸿蒙系统将适配高通/联发科手机:获国产厂商力挺...
  13. Intellij idea旗舰版最新免费破解使用方法(针对在校学生)
  14. 腾讯云轻量8核16G服务器18M带宽CPU流量性能测评
  15. 谷歌开发者大会焦点:TensorFlow.js可制作微信小程序,Android 10原生支持5G,TF2.0大更新...
  16. 快速上手Ubuntu之安装常用软件篇——打造一个满足基本娱乐办公的Ubuntu
  17. 软考高级-信息系统管理师之质量管理(最新版)
  18. 魔法宝石(动态规划)
  19. 题解报告:P2404 自然数的拆分问题(dfs+回溯)
  20. 查看Oracle sys_lob,system表空间满的处理-SYS_LOB0003450292C00039$$

热门文章

  1. 一篇抄十篇,CVPR Oral被指大量抄袭,大会最后一天曝光!
  2. android点击号码打电话,Android从虚拟号码拨打电话
  3. 大数据学习环境搭建系列(十二)Xshell的安装使用
  4. 小乐乐比较懒惰,他现在想睡觉,然后再去学习。他知道现在的时刻,以及自己要睡的时长,想设定一个闹钟叫他起床学习,但是他太笨了,不知道应该把闹钟设定在哪个时刻,请你帮助他。(只考虑时和分,不考虑日期)
  5. 微信分享JS接口失效说明及解决方案
  6. android6 miui9分屏,小米MIUI9重磅新功能曝光:分屏、画中画,更流畅省电
  7. 电力系统matlab程序设计,电力系统分析潮流计算课程序设计及其MATLAB程序设计
  8. Java Web当中使用EasyUI|快速建立漂亮的后台网站(教程+源代码)
  9. 向大家介绍一下我的生日礼物
  10. springboot《音悦唯尔》在线音乐播放网站129rq[独有源码]了解毕业设计的关键考虑因素