一、前言

学习就是一个不断的自下而上,自上而下的过程。

前段时间,学着用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语言程序设计》——程序的控制结构...相关推荐

  1. Python学习备忘笔记——Python概述

    移动互联网时代,手机阅读虽然十分便利,但对于一些相对复杂的知识,只读而不作进一步理解.记笔记,读进去的知识要转化为应用个人认为比较困难,例如最近在学习的Axure跟Python,Axure如果光看书不 ...

  2. c语言程序阅读题库,C语言程序设计-阅读程序题库及答案.doc-资源下载在线文库www.lddoc.cn...

    C语言程序设计-------阅读程序题库及答案.doc 阅读程序题 2 1 以下程序的输出结果是 main D float a a 1 100000000 printf g a A 0 00000e ...

  3. c语言程序表达语句,《C语言程序设计》讲稿.doc

    <C语言程序设计>讲稿 <C语言程序设计>讲稿 目 录 第一讲 C语言概述1 第二讲 C语言程序介绍2 第三讲 算法8 第四讲 数据类型(1)20 第五讲 数据类型(2)21 ...

  4. c语言程序运算绪论,计算机C语言程序设计ch01_绪论上.ppt

    高级语言程序设计 主讲 兰书梅邮箱 lansm 助课 张晶邮箱 zhangjing99 教学安排 主讲 作业 实验 考试 主讲 64学时全书内容习题课2到3次作业 课后及习题集必作选作实验 8次实验3 ...

  5. java语言程序设计 笔记_Java语言程序设计笔记

    本文主要向大家介绍了Java语言程序设计笔记,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 对象的自动清除 · 对象回收是由垃圾回收线程负责 · System.gc()方法可以要求系 ...

  6. c51单片机c语言程序,C51单片机的C语言程序设计.ppt

    <C51单片机的C语言程序设计.ppt>由会员分享,可在线阅读,更多相关<C51单片机的C语言程序设计.ppt(44页珍藏版)>请在人人文库网上搜索. 1.2020/8/7,1 ...

  7. c语言程序大型案例分析,C语言程序设计习题解析与应用案例分析(第2版)

    摘要: <C语言程序设计习题解析与应用案例分析(第2版)>从C语言程序设计的基本原理及程序设计的基本思想出发,贯穿"基础-应用"这一主线.<C语言程序设计习题解析 ...

  8. c语言程序构造数据类型问题,C语言程序设计课程课件之第四章简单构造数据类型.ppt...

    C语言程序设计课程课件之第四章简单构造数据类型 第四章 简单构造数据类型 目录 4.1 一维数组 4.2 二维数组 4.3 字符数组 4.4 数组与指针 4.5 数组及指针作为函数参数 4.1 一维数 ...

  9. picf509c语言程序,樊媛媛c语言程序设计09编译预处理.pptx

    樊媛媛c语言程序设计09编译预处理 9.1 宏定义 1.不带参的宏定义用一个指定的标识符(宏名)代表一个字符串.一般形式:#define 标识符 字符串如:#define PI 3.1415926有了 ...

  10. 单片机独立式按键c语言程序,(原创)51单片机C语言程序设计--速学教程实例(入门篇)之独立按键(查询)...

    (原创)51单片机C语言程序设计--速学教程实例(入门篇)之独立按键(查询) /************************************************************ ...

最新文章

  1. tf.keras.losses.MeanSquaredLogarithmicError 损失函数 的用法
  2. 机房监控系统解说--发电机篇
  3. (转载)php array_merge 和 两数组相加区别
  4. python如何修改excel数据库_python修改excel数据库
  5. Leet Code OJ 66. Plus One [Difficulty: Easy]
  6. 阮一峰react demo代码研究的学习笔记 - demo10 debug
  7. Android中写文本文件的方法
  8. OGRE分析之设计模式
  9. 使用Spring配置LogBack日志记录
  10. oracle查看表的命令,Oracle常用查看表结构命令
  11. python白盒测试_白盒测试方法
  12. Anconda之常用命令汇总
  13. 为什么打不过滴滴的Uber也要做无人驾驶?
  14. Big Sur MacOS高清动态壁纸
  15. http://www.spiceworks.com
  16. SAM2195和SAM2695 和SAM5704硬音源设备在三四十年前MIDI技术刚刚起步之时
  17. 陈安之超级成功法则(1)
  18. html 下拉框树,下拉框显示树形菜单
  19. 办公局域网内的打印机如何做共享?
  20. html怎么消除上下间距,html上下间距怎么调-电脑自学网

热门文章

  1. db2查看表结构_mysql误删数据库表的frm文件和ibd文件?试试这样恢复
  2. mysql self join_mysql self join的实现--left join 和inner join
  3. mysql可以运行计时_mysql的event schedule 计时执行
  4. 抢票软件原理_手机部应届生软件大赛 | SHOW MI YOUR CODE
  5. 开发日记-20190702 关键词 读书笔记《Linux 系统管理技术手册(第二版)》DAY 8
  6. 条件随机场——时间序列(句子单词序列也算),其特征函数必须要考虑前一刻的数据...
  7. NFL原则告诉我们做决策的时候,试图找到一个能解决所有问题,“大而全”的方案是不存在的。我们应当找到最关心的问题,因地制宜做出选择。——聚焦目标,取舍有道!...
  8. LSM树——放弃读能力换取写能力,将多次修改放在内存中形成有序树再统一写入磁盘...
  9. Java Spring Boot VS .NetCore (七) 配置文件
  10. 人口普查(20) PAT