python语言三大基本控制结构_【笔记】《python语言程序设计》——程序的控制结构...
一、前言
学习就是一个不断的自下而上,自上而下的过程。
前段时间,学着用python实现网站的数据爬取,隐约get到python的一些语法和用法,感觉就是语法不难,关键在于解决问题的思维。
这是需求驱动后的学习。接下来,就需要对python进行系统地了解。
很早之前搜知乎的时候,就搜到MOOC上的一门《python语言程序设计》课程,讲得很好,而且,我还下载了课件,溜了一遍,感觉就挺有趣的。
趁着有了实战经验,就把这门入门课刷了一遍。果然是门好课!很适合小白入门,并系统学习,整个教学过程循序渐进,深入浅出,提纲挈领,很有意思!
课程是北京理工大学嵩天老师的《python语言程序设计》课程,现在已经开了11次课了。课程每个小视频短则几分钟,最长也不超过20分钟,不容易劝退。每章讲解有复习回顾及小结,在平台python123上有每章的练习和测试,直接反馈结果,激发继续学下去的兴趣。
个人感觉,老师说话速度慢了些,调成了2倍速播放,然后,花了大约3天的时间,把所有的视频,课件,练习和测试都刷了一遍,感觉对python的了解更系统了!
趁热打铁,把每章的知识点和练习、测试再进行整理回顾一下。
以下内容均来自课程:《python语言程序设计》 及平台python123,感兴趣的看课程视频,亲自练习,效果更好~
二、知识点
1. 程序的分支结构
单分支结构
单分支示例:
guess=eval(input())
if guess==99:
print('猜对了')
二分支结构
①二分支示例:
guess=eval(input())
if guess==99:
print('猜对了')
else:
print('猜错了')
②紧凑形式:适用于简单表达式的二分之结构
<表达式1> if <条件> else <表达式2>
guess=eval(input())
print('猜{}了'.format('对' if guess==99 else '错'))
多分支结构
①多分支结构示例:
score=eval(input())
if score>=60:
grade='D'
elif score>=70:
grade='C'
elif score>=80:
grade='B'
elif score>=90:
grade='A'
print('输入成绩属于级别{}'.format(grade))
②程序的控制结构:顺序结构、分支结构、循环结构
条件判断及组合
①操作符
操作符
描述
<
小于
<=
小于等于
>=
大于等于
>
大于
==
等于
!=
不等于
x and y
两个条件x和y的逻辑与
x or y
两个条件x和y的逻辑或
not x
条件x的逻辑非
②示例
guess=eval(input())
if guess>99 or guess<99:
print('猜错了')
else:
print('猜对了')
程序的异常处理
①异常处理的基本使用
try:
<语句块1>
except:
<语句块2>
②示例1
try:
num=eval(input('请输入一个整数:'))
print(num**2)
except:
print('输入不是整数')
③示例2
# 标注异常类型后,仅响应此类异常,异常类型名字等同于变量名
try:
num=eval(input('请输入一个整数:'))
print(num**2)
except NameError:
print('输入不是整数')
④异常处理的高级使用
try:
<语句块1>
except:
<语句块2>
# else对应语句块3,在不发生异常时执行
else:
<语句块3>
# finally对应语句块4,一定执行
finally:
<语句块4>
2. 实例5:身体质量指数BMI
描述:同时输出国际和国内对应的分类
BMI=体重(kg)/身高2(m2)
bmi.png
height, weight=eval(input('请输入身高(米)和体重(公斤)[逗号隔开]:'))
bmi=weight/pow(height,2)
print('BMI数值为:{:.2f}'.format(bmi))
who,nat='',''
if bmi<18.5:
who,nat='偏瘦','偏瘦'
elif 18.5<=bmi<24:
who,nat='正常','正常'
elif 24<=bmi<25:
who,nat='正常','偏胖'
elif 25<=bmi<28:
who,nat='偏胖','偏胖'
elif 28<=bmi<30:
who,nat='偏胖','肥胖'
else:
who,nat='肥胖','肥胖'
print("BMI指标为:国际'{0}',国内'{1}'".format(who.nat))
3.程序的循环结构
遍历循环
①语法:
for <循环遍历> in <遍历结构>:
<语句块>
②举例:
#计数循环(N次)
for i in range(N):
<语句块>
#计数循环(特定次)
for i in range(M,N,k):
<语句块>
#字符串遍历循环
for i in s:
<语句块>
#列表遍历循环,ls是一个列表,遍历其每个元素,产生循环
for item in ls:
<语句块>
#文件遍历循环,fi是一个文件标识符,遍历其每行,产生循环
for line in fi:
<语句块>
无限循环:由条件控制的循环运行方式
#反复执行语句块,直到条件不满足时结束
while <条件>:
<语句块>
#示例,无限循环的条件
a=3
while a>0:
a=a-1
print(a)
循环控制保留字:break和continue
①break:跳出并结束当前整个循环,执行循环后的语句,仅跳出当前最内层循环
②continue:结束当次循环,继续执行后续次数循环
③break和continue:可以与for和while循环搭配使用
循环保留字.png
循环的高级用法:循环与else
①当循环没有被break语句退出时,执行else语句块
②else语句块作为“正常”完成循环的奖励
③这里else的用法与异常处理中else用法相似
循环与else.png
4.模块3:random库的使用
random库基本介绍
①random库是使用随机数的Python标准库
②random库主要用于生成随机数
③使用:import random
④需要掌握的能力:能够利用随机数种子产生“确定”伪随机数;能够产生随机整数;能够对序列类型进行随机操作;
基本随机数函数
函数
描述
seed(a=None)
初始化给定的随机数种子,默认为当前系统时间
random()
生成一个[0.0,1.0)之间的随机小数
基本随机数函数.png
扩展随机数函数
函数
描述
randint(a,b)
生成一个[a,b]之间的整数
randrange(m,n[,k])
生成一个[m,n)之间以k为步长的随机整数
randrange(10,100,10)结果可能为80
getrandbits(k)
生成一个k比特长的随机整数
random.getrandbits(16)结果可能为37885
uniform(a,b)
生成一个[a,b]之间的随机小数
random.uniform(10,100)结果可能为13.096321648808136
choice(seq)
从序列seq中随机选择一个元素
random.choice([1,2,3,4,5,6,7,8,9])结果可能为8
shuffle(seq)
将序列seq中元素随机排列,返回打乱后的序列
s=[1,2,3,4,5,6,7,8,9];random.shuffle(s);print(s)结果可能为[3,5,8,9,6,1,2,7,4]
PS:哈哈,就喜欢这种态度!
学不会就学不会.png
5.实例6:圆周率的计算
描述:求解圆周率可以采用蒙特卡罗方法,在一个正方形中撒点,根据在1/4圆内点的数量占总撒点数的比例计算圆周率值。
from random import random
from time import perf_counter
DARTS=1000*1000
hits=0.0
start=perf_counter()
for i in range(1,DARTS+1):
x,y=random(),random()
dist=pow(x**2,y**2,0.5)
if dist<=1.0:
hits=hits+1
pi=4*(hits/DARTS)
print('圆周率值是:{}'.format(pi))
print('运行时间是:{:.5f}s'.format(perf_counter()-start))
三、练习
1.实例5:身体质量指数BMI
同上
2. 实例6:圆周率的计算
同上
3. 整数的加减和
描述:编写程序计算如下数列的值:
1-2+3-4...966
其中,所有数字为整数,从1开始递增,奇数为正,偶数为负
r=1
for i in range(2,967):
if i%2==0:
r=eval(str(r)+'-'+str(i))
else:
r=eval(str(r)+'+'+str(i))
print(r)
4. 三位水仙花数
描述:"水仙花数"是指一个三位整数,其各位数字的3次方和等于该数本身。
例如:ABC是一个"3位水仙花数",则:A的3次方+B的3次方+C的3次方 = ABC。
请按照从小到大的顺序输出所有的3位水仙花数,请用"逗号"分隔输出结果。
k=''
for i in range(100,1000):
k1=i//100
k2=(i-k1*100)//10
k3=i-k1*100-k2*10
if pow(k1,3)+pow(k2,3)+pow(k3,3)==i:
k+=str(i)+','
print(k.rstrip(','))
5.用户登录的三次机会
描述:给用户三次输入用户名和密码的机会,要求如下:
1)如输入第一行输入用户名为‘Kate’,第二行输入密码为‘666666’,输出‘登录成功!’,退出程序;
2)当一共有3次输入用户名或密码不正确输出“3次用户名或者密码均有误!退出程序。”。
for i in range(1,4):
ID=input()
pw=input()
if (ID=='Kate')&(pw=='666666'):
print('登录成功!')
break
else:
print('3次用户名或者密码均有误!退出程序。')
四、测试
1.选择题
for var in ___:
print(var)
哪个选项不符合上述程序空白处的语法要求?
A "Hello"
B (1,2,3)
C range(0,10)
D {1;2;3;4;5}
for .. in .. 中 in 的后面需要是一个迭代类型(组合类型),{1;2;3;4;5}不是Python的有效数据类型。
for i in range(0,2):
print(i)
哪个选项是以上程序的输出结果?
A 1 B 1 2 C 0 1 2 D 0 1
range(0, 2)输出两个值:0和1。
k=10000
while k>1:
print(k)
k=k/2
哪个选项给出了上述程序的输出次数?
A 15 B 1000 C 13 D 14
请跟随程序计算或在IDLE中运行程序获得结果。
哪个选项是程序的三种基本结构?
A 顺序结构,跳转结构,循环结构
B 过程结构,对象结构,函数结构
C 顺序结构,循环结构,分支结构
D 过程结构,循环结构,分支结构
无对象结构、跳转结构、过程结构等说法
哪个选项关于循环结构的描述是错误的?
A 条件循环和遍历循环结构都是基本的循环结构
B 循环是一种程序的基本控制结构
C 循环是程序根据条件判断结果向后反复执行的一种运行方式
D 死循环无法退出,没有任何作用
死循环能够用于测试性能,形式上的死循环可以用break来退出,例如:
x = 10
while True:
x = x - 1
if x == 1:
break
死循环是有其作用的。
关于Python语句P=-P,哪个选项的描述是正确的?
A 给P赋值为它的负数
B P等于它的负数
C P=0
D P的绝对值
turtle.pendown()只是放下画笔,并不绘制任何内容。
哪个选项是用来判断当前Python语句在分支结构中?
A 缩进 B 冒号 C 引号 D 大括号
缩进表达层次关系。
哪个选项是下面代码的执行结果?
for s in "PYTHON":
if s=="T":
continue
print(s,end="")
A TT B PYTHON C PY D PYHON
continue结束当次循环,但不跳出当前循环。
哪个选项是random库中用于生成随机小数的函数?
A randrange() B randint() C random() D getrandbits()
randint()、getrandbits()、randrange()都产生随机整数,random()产生0到1之间的随机小数。
关于try-except,哪个选项的描述是错误的??
A NameError是一种异常类型
B 用于对程序的异常进行捕捉和处理
C 表达了一种分支结构的特点
D 使用了异常处理,程序将不会再出错
使用了异常处理,程序可能运行不会出错,但逻辑上可能出错。程序错误是一个大概念,不仅指代码运行错误,更代表功能逻辑错误。
2.程序设计题
四位玫瑰数
描述:四位玫瑰数是4位数的自幂数。自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。
例如:当n为3时,有1^3 + 5^3 + 3^3 = 153,153即是n为3时的一个自幂数,3位数的自幂数被称为水仙花数。
请输出所有4位数的四位玫瑰数,按照从小到大顺序,每个数字一行。
for i in range(1000,10000):
k1=i//1000
k2=(i-k1*1000)//100
k3=(i-k1*1000-k2*100)//10
k4=i-k1*1000-k2*100-k3*10
if pow(k1,4)+pow(k2,4)+pow(k3,4)+pow(k4,4)==i:
print(i)
100以内素数之和
描述:求100以内所有素数之和并输出。
素数指从大于1,且仅能被1和自己整除的整数。
提示:可以逐一判断100以内每个数是否为素数,然后求和。
m=0
for i in range(2,101):
for k in range(2,101):
if (i%k==0)&(i!=k):
break
else:
m=m+i
print(m)
python语言三大基本控制结构_【笔记】《python语言程序设计》——程序的控制结构...相关推荐
- python线性表和队列_[笔记]python数据结构之线性表:linkedlist链表,stack栈,queue队列...
python数据结构之线性表 python内置了很多高级数据结构,list,dict,tuple,string,set等,在使用的时候十分舒心.但是,如果从一个初学者的角度利用python学习数据结构 ...
- python的三大错误类型_学习Python时要避免的三个错误
当你做错事时,承认错误并不是一件容易的事,但是犯错是任何学习过程中的一部分,无论是学习走路,还是学习一种新的编程语言都是这样,比如学习 Python. 为了让初学 Python 的程序员避免犯同样的错 ...
- 【笔记】Python学习(廖雪峰)笔记①——Python基础知识
Python学习(廖雪峰)笔记①--Python基础知识 Python 基础知识 字符串与编码 ASCII.Unicode.UTF-8 Python字符串 格式化 使用list和tuple list( ...
- 88是python语言的整数类型_少儿Python编程_第三讲:常量变量和数据类型
无论使用哪一种编程语言,甚至是学习数学.物理,都需要掌握常量.变量.表达式的概念和用法.本讲将带领读者进入编程世界,学习程序的基本元素. 3.1 基本数据类型 基本数据类型有数值型.布尔型和字符型.它 ...
- python是一种动态语言、这意味着_【python编程的优点是什么?难怪选择python的人越来越多了】- 环球网校...
[摘要]Python是一种动态解释的.强类型定义语言:编写它时不需要定义变量类型.python判断值的类型的方法是什么,那么python编程的优点是什么?难怪选择python的人越来越多了,所以你知道 ...
- python语言设计学习方向_学好Python开发就业方向有哪些?
原标题:学好Python开发就业方向有哪些? 近年来,Python市场火爆,从业人员薪资不断增加,选择学Python的人也在逐年增多.然而,很多人学Python只是盲目的跟随潮流,对于Python却不 ...
- python可以做特效吗_学习mel语言,Python,JavaScript到什么程度才能做一下大型特效,要自已开发插件脚本呢?...
感谢邀请.首先自己要在某一方面要擅长,认准一个定位. 比如android是钥匙做前端应用软件的,python可以做爬虫及其人工智能,js做全段网页,java主要是做后端的 1.我们程序员对于开发软件来 ...
- python函数赋值给对象_【Python核心编程笔记】一、Python中一切皆对象
Python中一切皆对象本章节首先对比静态语言以及动态语言,然后介绍 python 中最底层也是面向对象最重要的几个概念-object.type和class之间的关系,以此来引出在python如何做到 ...
- python语言是 创造的_慢步python,如何用python语言创造出一个真正的独立exe程序?...
我们学习编程,终极目标还是编写一个独立的应用程序.独立的应用程序应该像QQ,微信一样不依靠其他程序运行,只有平台支持,就可以运行.从这个意义上说,所用应用程序都是基于操作系统运行的. 那么如何用pyt ...
- 简述python语言的主要领域_简述Python语言经验总结
Python语言是不被大多数人知道的东西,这里就简单概述下Python语言,顺便闲谈一 下Python 标准库."俗话"说:库即是语言,语言即是库.由此可见拥有一套高质量.具备良好 ...
最新文章
- no判断 python yes_python的判断 - osc_kewb5r6m的个人空间 - OSCHINA - 中文开源技术交流社区...
- C语言 | 用51单片机实现公历与农历星期的转换(完整源代码)
- 物理化学 化学 动力学(上)
- SAP Fiori 1.0 Migrate to Fiori 2.0
- 如何给虚拟机上的linux系统添加虚拟硬盘
- 阿里RocketMQ Quick Start
- Error:-81024 LR_VUG:The 'QTWeb' type is not supported on win32 platforms
- 设计模式的C语言应用-状态机模式-第二章
- Collections常用方法总结
- 语音识别如何识别中英混杂的语句?或者别的不同语言混合的语句?
- 医院耗材管理系统开发_8
- Win10笔记本电脑怎么直接重置初始化
- java解压缩/压缩/加密压缩/加密解压缩 ZIP4J ZIP文件压缩与解压缩学习
- Scratch案例——画彩虹
- 2022-3-26JavaSE试卷-答案
- TextView实现水平滚动
- 编码的奥秘:从算盘到芯片
- iOS 利用 Metal 实现滤镜与动效滤镜
- 嵌入式基础学习-U-Boot使用
- 云服务器文件导入,将电脑上的文件导入云服务器