小奥的学习笔记

  • Home
  • Learning & Working
    • Speech Enhancement Notes
    • Programming language
    • Computer & DL
    • MOOC
  • Life
    • Life Time
    • Thinking & Comprehension
    • Volunteer
    • Plan
    • Travel
  • Footprints
  • GuestBook
  • About
    • About Me
    • 个人履历
    • 隐私策略
  1. 首页
  2. Study-notes
  3. Programming language
  4. Python
  5. 正文

Python语言程序设计(第4周)整理

2018年4月3日 1384点热度 0人点赞 0条评论

第四周:程序的控制结构

4.1 程序的分支结构

1.单分支结构

   if<条件>:

     <语句块>

2.二分支结构

if <condition>:

  <yujukuai1>

else:

  <yujukuai2>

还有一种紧凑表达式:

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

例如:

guess =eval(input())

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

注意:紧凑形式只支持表达式,不支持其他类型语句(例如赋值语句)

3.多分支结构

例程:

score = eval(input())
if ((score >=90) and (score<=100)):
    grade = "A"
elif ((score >=80) and (score<90)):
    grade = "B"
elif ((score >=70) and (score<80)):
    grade = "C"
elif ((score >=60) and (score<70)):
    grade = "D"
elif ((score >=0) and (score<60)):
    grade = "E"
else:
    grade = "Wrong"
print("你的考试等级为:{}".format(grade))

4.条件判断及组合

表1 用于条件组合的三个保留字

操作符及使用

描述

x and y

只有当x,y均为True时,才为True

x or y

x,y中有一个为True,就为True

not x

非x

 

5.程序的异常处理

格式:

try:

<语句块1>

except:

<语句块2>

上面这种类型是出现异常都执行后面的。下面这种格式是只有出现指定异常类型才执行这种操作:

try:

<语句块1>

except <异常类型>:

<语句块2>

异常处理的高级使用:

try:

<yujukuai1>

except:

<yujukuai2>

else:#不发生异常时执行

<yujukuai3>

finally:#一定执行

<yujukuai4>

4.2 实例5:身体质量指数BMI

1.问题需求分析

BMI = 体重(kg)/身高(m)2

表2 BMI标准

分类

国际BMI值

国内BMI值

偏瘦

<18.5

<18.5

正常

18.5~25

18.5~24

偏胖

25~30

24~28

肥胖

≥30

≥28

2.代码:

mess = eval(input("请输入你的体重(单位:千克):\n"))
length = eval(input("请输入你的身高(单位:米):\n"))
bmi = mess/(length**2)
print("BMI数值为:{:.2f}".format(bmi))
hcn,hin = "",""
if bmi <18.5:
    hcn = "偏瘦"
    hin = "偏瘦"
elif bmi>=18.5 and bmi <24:
    hcn = "正常"
    hin = "正常"
elif bmi>=24 and bmi<25:
    hcn,hin = "偏胖","正常"
elif bmi >=25 and bmi<28:
    hcn,hin = "偏胖","偏胖"
elif bmi>=28 and bmi<30:
    hcn, hin ="肥胖","偏胖"
else:
    hcn,hin = "肥胖","肥胖"
print("根据国内BMI标准,你的体质为{0};根据国际BMI标准,你的体质为{1}。".format(hcn,hin))

4.3 程序的循环结构

1.遍历循环

常用使用方式:

(1)计数循环(N次):

for i in range(N):

<语句块>

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

<语句块>

这里面,M代表起始数字,N代表生成到N-1,K为步长。

(2)字符串遍历应用

for c in s:

<语句块>

s是字符串,遍历字符串中每个字符,产生循环。

(3)列表遍历循环

for item in ls:

<语句块>

其中ls是一个列表,遍历其每一个元素,产生循环。

(4)文件遍历循环

for line in fi:

<语句块>

fi是一个文件标识符,遍历其每行,产生循环。

2.无限循环

while<条件>:

<语句块>

注意:若程序循环执行不退出,则可以按Ctrl+C退出程序。

3.循环控制保留字

break☞跳出并结束当前整个循环,执行循环后面的语句;

continue☞跳出并结束本次循环,执行下一次循环。

4.循环的高级用法

循环与else

当循环没有被break语句退出时,执行else语句块。else语句块作为“正常”完成循环的奖励,这里面的else用法和异常中类似。

例如:

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

运行结果:PYHON正常退出

4.4 random库的使用

1.random库基本介绍

random库是使用随机数的python标准库。

基本随机数函数:seed()/random()

扩展随机数函数:randint()/getandbits()/uniform()/randrange()/choice()/shuffle()

2.基本随机数函数

计算机生成随机数,是用随机数种子,根据梅森旋转算法产生。随机数种子确定了随机数的产生。

表3基本随机数函数

函数

描述

seed(a=None)

初始化给定的随机数种子,默认使用当前系统时间。如:random.seed(10)是产生种子10对应的序列

random()

生成[0.0,1.0]之间的随机小数

 

3.拓展随机数函数

表4 扩展随机数函数

函数

描述

randint(a,b)

随机生成一个[a,b]之间的整数

randange(m,n[,k])

生成一个[m,n]之间以k为步长的随机整数

getandbits(k)

生成一个k比特长的随机整数

uniform(a,b)

生成一个[a,b]之间的随机小数

choice(seq)

从序列seq中随机选择一个元素

shuffle(seq)

将序列seq中的元素随机排序,返回打乱后的序列

 

4.5实例6:圆周率的计算

1.公式法:

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

2.蒙特卡洛法

@author: davidcheung
"""
#CalPiV2.py
from random import random
from time import perf_counter
DARTS = 5000*5000#总的点数
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:#看这个点是否在园内,若小于0,则在圆内
        hits = hits + 1
pi = 4 * (hits/DARTS)
print("圆周率值是: {}".format(pi))
print("运行时间是: {:.5f}s".format(perf_counter() - start))

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: Python python学习
最后更新:2018年4月3日

davidcheung

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

搜索
欢迎关注我的个人公众号
最新 热点 随机
最新 热点 随机
DEEPFILTERNET:一种基于深度滤波的全频带音频低复杂度语音增强框架 奥地利匈牙利九日游旅程 论文阅读之Study of the General Kalman Filter for Echo Cancellation 小奥看房之鸿荣源珈誉府 杭州往返旅途及西溪喜来登和万怡的体验报告 2022年的第一篇碎碎念
奥地利匈牙利九日游旅程小奥看房之鸿荣源珈誉府论文阅读之Study of the General Kalman Filter for Echo CancellationDEEPFILTERNET:一种基于深度滤波的全频带音频低复杂度语音增强框架
C++面向对象程序设计课程笔记(第一周) 学术报告:From Matrix to Tensor: Algorithm and Hardware Co-Design for Energy-Efficient Deep Learning 在微机课写日志 曾经的自己[转载] 博客即日起开始“上云”啦! 卡尔曼滤波器学习笔记:初步认识
标签聚合
学习 鸟哥的linux私房菜 算法 linux Java python学习 生活 Python 高中 leetcode
最近评论
davidcheung 发布于 5 个月前(02月09日) The problem has been fixed. May I ask if you can s...
tk88 发布于 5 个月前(02月07日) Hmm is anyone else having problems with the pictur...
cuicui 发布于 9 个月前(10月20日) :wink:
niming 发布于 10 个月前(09月19日) 同级校友,能刷到太巧了
davidcheung 发布于 2 年前(08月16日) 我得找一下我之前整理的word文档看一下,如果找到了我就更新一下这篇文章。
Nolan 发布于 2 年前(07月25日) 您的笔记非常有帮助。贴图不显示了,可以更新一下吗?
davidcheung 发布于 3 年前(06月19日) 到没有看webrtc的代码。现在主要在看我们公司的代码了。。。只是偶尔看一看webrtc的东西。。。
aobai 发布于 3 年前(03月13日) gain_change_hangover_ 应该是每三个block 只能够调整一次,这样保证每帧...
匿名 发布于 5 年前(12月30日) 烫
小奥 发布于 5 年前(12月12日) webRTC里面的NS本身我记得就是在C++里面呀

COPYRIGHT © 2025 小奥的学习笔记. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

陕ICP备19003234号-1

鲁公网安备37120202000100号