......................................................................................................................................................................................

程序的控制结构

......................................................................................................................................................................................

程序的分支结构

根据判断条件结果而选择不同向前路径的运行方式

单分支结构

if <条件> :

<语句块>

例:if True:

print("条件正确")

二分支结构

if <条件> :

<语句块1>

else :

<语句块2>

例:if True:

print("语句块1")

else :

print("语句块2")

紧凑形式:适用于简单表达式的二分支结构

<表达式1> if <条件> else <表达式2>

例:guess = eval(input())

print("猜{}了".format("对" if guess==99 else "错"))

多分支结构

if <条件1> :

<语句块1>

elif <条件2> :

<语句块2>

……

else :

<语句块N>

例:

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>

例:

try :
num = eval(input("请输入一个整数: "))
print(num^2)
except :
print("输入不是整数")

或者

try :
num = eval(input("请输入一个整数: "))
print(num^2)
except **NameError**: -标注异常类型后,仅响应此类异常,异常类型名字等同于变量名
print("输入不是整数")

异常处理的高级使用

try :

<语句块1>

except :

<语句块2>

else :

<语句块3> -else对应语句块3在不发生异常时执行

finally :

<语句块4> -finally对应语句块4一定执行

实例5: 身体质量指数BMI

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))

程序的循环结构

遍历循环

遍历某个结构形成的循环运行方式

for <循环变量> in <遍历结构> :   - 从遍历结构中逐一提取元素,放在循环变量中

<语句块>

遍历循环的应用

  • 计数循环(N次)

    for i in range(N) :    - 遍历由range()函数产生的数字序列,产生循环

    <语句块>

    例:
>>> for i in range(5):
print(i)
0
1
2
3
4
  • 计数循环(特定次)

    for i in range(M,N,K) :

    <语句块>

    例:
>>> for i in range(1,6,2):
print("Hello:",i)
Hello: 1
Hello: 3
Hello: 5
  • 字符串遍历循环

    for c in s :   - s是字符串,遍历字符串每个字符,产生循环

    <语句块>

    例:
>>> for c in "Python123":
print(c, end=",")
P,y,t,h,o,n,1,2,3,
  • 列表遍历循环

    for item in ls :   - ls是一个列表,遍历其每个元素,产生循环

    <语句块>

    例:
>>> for item in [123, "PY", 456] :
print(item, end=",")
123,PY,456,
  • 文件遍历循环

    for line in fi :   - fi是一个文件标识符,遍历其每行,产生循环

    <语句块>

    例:
>>> for line in fi :
print(line)
优美胜于丑陋
明了胜于隐晦
简洁胜于复杂

无限循环

由条件控制的循环运行方式

while <条件> :   - 反复执行语句块,直到条件不满足时结束

<语句块>

无限循环的应用

无限循环的条件

>>> a = 3
>>> while a > 0 :
a = a - 1
print(a)
2
1
0

循环控制保留字(break 和 continue)

  • break跳出并结束当前整个循环,执行循环后的语句
  • continue结束当次循环,继续执行后续次数循环
  • break和continue可以与for和while循环搭配使用

    例:
>>> for c in "PYTHON" :
if c == "T" :
continue
print(c, end=" ")
PYHON
>>> for c in "PYTHON" :
if c == "T" :
break
print(c, end=" ")
PY

注:break仅跳出当前最内层循环

循环的高级用法

循环的扩展

循环与else

for <变量> in <遍历结构> :    -当循环没有被break语句退出时,执行else语句块

<语句块1>    -else语句块作为"正常"完成循环的奖励

else :

<语句块2>   - 这里else的用法与异常处理中else用法相似

while <条件> :

<语句块1>

else :

<语句块2>

例:

>>> for c in "PYTHON" :
if c == "T" :
continue
print(c, end="")
else:
print("正常退出")
PYHON正常退出
>>> for c in "PYTHON" :
if c == "T" :
break
print(c, end="")
else:
print("正常退出")
PY

模块3: random库的使用

random库是使用随机数的Python标准库

  • 伪随机数: 采用梅森旋转算法生成的(伪)随机序列中元素
  • random库主要用于生成随机数
  • 使用random库: import random

    random库包括两类函数,常用共8个
  • 基本随机数函数: seed(), random()
  • 扩展随机数函数: randint(), getrandbits(), uniform(), randrange(), choice(), shuffle()

基本随机数函数

函数 描述
seed(a=None) 初始化给定的随机数种子,默认为当前系统时间 >>>random.seed(10) #产生种子10对应的序列
random() 生成一个[0.0, 1.0)之间的随机小数>>>random.random() 0.5714025946899135

例:

>>> import random
>>> random.seed(10)
>>> random.random()
0.5714025946899135

扩展随机数函数

函数 描述
randint(a, b) 生成一个[a, b]之间的整数 >>>random.randint(10, 100) 64
randrange(m, n[, k]) 生成一个[m, n)之间以k为步长的随机整数 >>>random.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];random.shuffle(s);print(s) [3, 5, 1, 2, 4]

实例6: 圆周率的计算

公式法:

#CalPiV1.py
pi = 0
N = 100
for k in range(N) :
pi += 1/pow(16,k)*( \
4/(8*k+1) – 2/(8*k+4) - \
1/(8*k+5) – 1/(8*k+6))
print("圆周率值是: {}".format(pi))

蒙特卡罗方法:

#CalPiV2.py
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))

python学习笔记(4)的更多相关文章

  1. python学习笔记整理——字典

    python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...

  2. VS2013中Python学习笔记[Django Web的第一个网页]

    前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...

  3. python学习笔记之module && package

    个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...

  4. python学习笔记(六)文件夹遍历,异常处理

    python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...

  5. python学习笔记--Django入门四 管理站点--二

    接上一节  python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...

  6. python学习笔记--Django入门0 安装dangjo

    经过这几天的折腾,经历了Django的各种报错,翻译的内容虽然不错,但是与实际的版本有差别,会出现各种奇葩的错误.现在终于找到了解决方法:查看英文原版内容:http://djangobook.com/ ...

  7. python学习笔记(一)元组,序列,字典

    python学习笔记(一)元组,序列,字典

  8. Pythoner | 你像从前一样的Python学习笔记

    Pythoner | 你像从前一样的Python学习笔记 Pythoner

  9. OpenCV之Python学习笔记

    OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...

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

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

随机推荐

  1. pandas.read_csv() 报错 OSError: Initializing from file failed,报错原因分析和解决方法

    今天调用pandas读取csv文件时,突然报错“ OSError: Initializing from file failed ”,我是有点奇怪的,以前用的好好的,read_csv(path)方法不是 ...

  2. java -jar和hadoop jar的区别

    hadoop jar可以看做是java -jar的升级,可以和它一样带参数,程序一样的解析 不同的是hadoop jar运行的jar包他会依赖于hadoop安装目录下面的一些环境,并且你jar包里指定 ...

  3. P5284 [十二省联考2019]字符串问题

    这是一道涵盖了字符串.图论.数据结构三个方面的综合大题. 把这道题放在D1T2的人应该拖出去打 前置芝士 首先,您至少要会topsort. 其次,如果您只想拿个暴力分,字符串Hash就足够了:如果您想 ...

  4. IAR中如何定向把数组和函数放在指定的地址单元

    1. 指定数组到特定的Flash单元#pragma location = 0x000FFF00 __root const char Flash_config[] = {0x0,0x1,0x2,0x3, ...

  5. BFS 模拟队列(水题)

    BFS 这道题 觉得比较适合BFS新手入门写,也许大家都以为最入门 的BFS题是在二维图上搜索,但是这道题是线性搜索,更加简单 POJ 3278 Catch That Cow Time Limit:  ...

  6. SkyReach 团队团队展示

    班级:软件工程1916|W 作业:团队作业第一次-团队展示 团队名称:SkyReach 目标:展示团队风采,磨合团队 队员姓名与学号 队员学号 队员姓名 个人博客地址 备注 221600107 陈某某 ...

  7. day16——函数式编程和内置函数

    编程的方法论 面向过程:找到问题的 函数式:不可变.不用变量保存状态.不修改变量 面向对象: 高阶函数: 满足俩个特性任意一个即为高阶函数 1.函数的传入参数是一个函数名 2.函数的返回值是一个函数名 ...

  8. Java字符串中常用字符占用字节数

    java中一个char型的数据(也就是一个字符)占两个字节.而Java中常用的字符包括数字.英文字母.英文符号.中文汉字.中文符号等,若在字符串中包含里面的多种字符,它们是否都占两个字符呢?答案是否定 ...

  9. 利用 v-html 将后台数据中的换行符在页面输出

    在拿到后台传入的数据时:有些换行符,空格等会直接输出在页面   (/n .<br/> 等) 用  v-html 来解决: <div v-html="message" ...

  10. java - day005 - 数组工具类, 数组复制,二维数组,变量,方法, 面向对象

    1. java.util.Arrays  数组工具类    Arrays.toString (数组) 数组值链接字符串 Arrays.sort(数组) 基本类型: 优化的快速排序 引用类型: 优化的合 ...