python第三天 程序的控制 函数和代码复用

本文介绍了Python编程中的程序控制结构,包括顺序、分支和循环结构,并详细讲解了异常处理。在循环部分,涉及了遍历循环和无限循环,以及循环控制保留字。此外,文章还探讨了random库的使用。接着,作者讨论了如何计算圆周率,并给出课后练习。在函数和代码复用章节,解释了函数定义、可选参数、可变参数、返回值以及lambda函数。文章最后提到了代码复用与递归,以及使用PyInstaller将Python脚本打包为可执行文件的方法。
摘要由CSDN通过智能技术生成

程序的控制结构

程序的控制结构有: 顺序结构,分支结构,循环结构

单分支结构 :可以理解为 如果xx 就yyy

以简单的猜数字为例子
(if True 代表始终为真, if not True 代表始终为假)

guess = eval(input())
if guess == 99:
	print("Right!")

双分支

guess = eval(input())
if guess == 99:
	print("Right!")
eles:
	print("False")

双分支的紧凑形式格式:
<表达式1> if <条件> else< 表达式2> > :意思是如果条件成立,那么返回表达式1 ,否则,返回表达式2
表达式是语句的一部分,它不是语句

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

多分支结构

score = eval(input())
if score >= 90:
	grade = "A"
elif score >= 80 :
	grade = "B"
elif score >= 70:
	grade = "C"
elif score >= 60:
	grade = "D"
print("成绩等级为{}".format(grade))

注意分支的设计,如果是 60,70,80 ,90 这样判断,那么91分会直接判定为D等级

条件判断符:> ,<, =, >=, <=, ==, !=
逻辑判断 : and,or ,not (简单来讲就是与或非)。 and <=> && , or <=> || ,not <=> !

guess = eval(input())
if guess > 99 or guess < 99:
	print("Right")
else:
	print("False")

异常处理

num = eval(input())
#平方操作
print(num**2)

如果用户没有输入整数怎么办?所以我们要对异常进行处理。
在语句块1 中发生except中指定的异常时,执行语句块2,当然也可以不指定,只要发生异常就执行语句块2
try: 语句块1 except<异常类型> : 语句块2

所以我们对程序进行改造

try:
	num = eval(input())
	print(num**2)
except NameError:
	print("输入不是整数")

另一种异常处理
在这里插入图片描述
这个意思是,try中的语句块1,发生了异常,执行语句块2,不发生异常执行else 的语句块3,最后无论如何都要执行,finally的语句块4

练习:身体质量质数BMI

BMI计算:体重(kg)/ 身高的平方(m)

height,weight = eval(input("请输入身高(米)和体重(公斤)【逗号隔开】:"))
bmi = weight / (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 < 28:
    who,nat = "偏胖","偏胖"
elif 28 <= bmi:
    who,nat = "偏胖","肥胖"
print("BMI指标为:国内'{1}',国外'{0}'".format(who,nat))

只要设计多分支,一定要注意范围覆盖的问题!!!

循环

python提供了两种循环方式,遍历循环和无限循环
遍历循环,遍历某个结构形成的循环方式
for <循环变量> in <遍历结构>
<语句块>

常用:
计数循环

循环N次
for i in range(N)
	<语句块>
#以M开始一直到N的前一个数字,步长为K
#range(0,5,2) 那么结果就是 0 2,4 ,K可以省略,默认为1
for i in range(M,N,K):
	<语句块>

字符串遍历

#遍历s字符串
#for c in s:
#	<语句块>
for c in “python”:
	print(c,end=",")

遍历列表

#for item in ls:
#	<语句块>
for item in ["py",1,2,3,"thon"]
	print(item,end=",")

文件遍历

#文件遍历循环
# fi 是文件标识符
#line 文件的每一行
for line in fi
   <语句块>

无限循环

只要条件成立就执行表达式,执行之后再判断条件成立与否,不满足条件时,退出

while 条件:
	<表达式>

循环控制保留字

break,continue
break,跳出当前循环
continue,跳过当前循环,执行下次循环
在这里插入图片描述

循环扩展

for <循环变量> in <遍历结构> :
	<语句块1>
else : 
	<语句块2>


while <条件>:
	<语句块1>
else:
	<语句块2>

可以这么理解,else 就是正常完成循环的奖励!如果被break了,那么就不执行。

通过else 我们可以直接看出这个循环是否正常结束!
在这里插入图片描述

random库

random是使用随机数的Python的标准库
底层使用的是梅森选装算法生成的伪随机序列的元素。

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

扩展随机数函数:randint() ,getrandits() ,uniform(),
randrange() , choice() , shuffle()

随机数种子,梅森选装算法根据随机数种子,产生随机数数序列。也就是说种子和随机序列是一对一的关系。
在这里插入图片描述
那么确定种子,就要使用seed(a = None) 函数,初始化给定的随机数种子,默认为当前系统时间。
random.seed(10) : 当前的随机值种子为10。
如果要再现随机过程,那么就设定一个随机数,如果不需要,那么就使用默认的即可。

扩展随机数

randint(a,b) : 生成一个【a,b】之间的随机整数

randrange(m,n,[k]) : 生成一个【m,n)以K为步长的随机整数。例如random.randrange(10,100,10) 产生【10,100)之间,以10为步长,取随机值。

getrandbits(k) : 生成一个k比特长的随机整数,例如 random.getrandbits(8) 就会生成0-255之间的整数

uniform(a,b) : 生成【a,b】之间的随机小数

choice(seq) : 从序列seq 中随机选取一个元素。例如 random.choice([1,2,3,4,5,6,7]) 就是在这个列表中随机选取一个值。

shuffle(seq) :将序列 seq 中元素随机排列,返回打乱后的序列。

圆周率的计算

1.近似公式计算
在这里插入图片描述
朴素方法计算

pi = 0
N = 1000
for k  in range(N):
    pi += 1/pow(16,k) * ( \
        4
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值