首页 > 编程语言 > 详细

Python学习(三)

时间:2021-04-05 12:38:43      阅读:26      评论:0      收藏:0      [点我收藏+]

python程序的控制结构

主要内容:分支结构、循环结构。

程序的分支结构

分支结构包含单分支结构,多分支结构以及

单分支结构

根据判断条件结果来控制程序前往不同的路径。

#guess.py
a = eval(input())
if(a==99):
	print("Right!")

二分支结构

通常由两种方式:
if...else...
紧凑形式 <表达式1> if <判断条件> else <表达式二>,在紧凑形式中只支持表达式形式,不支持带等号的赋值形式。

a = eval(input())
if(a==99):
	print("Right!")
else:
	print("Wrong!")
#另一种形式
print("猜{}了".format("对" if guess==99 else "错"))

多分支结构

通常多分支结构即通过:if...elfi...else来完成。但是必须要注意的是:if语句是天然存在优先级关系的,这一点在任何语言中都是一样的(包括Verilog),所以必须特别注意不同条件之间的先后关系以及包含关系。

#成绩判断
grade = eval(input())
if grade >= 90:
	print("A")
elif grade >= 80:
	print("B")
elif grade >= 70:
	print("C")
elif grade >= 60:
	print("D")
else:
	print("E")

显然,在以上代码中,如果第一个做判断的是60哪一项,那么输出将会错误。因为大于等于60是包含了其他各项的。

条件判断及其组合

python提供了一些基本的条件判断符号,大于等于小于等,这是同C语言中一样的。此处就不再赘述。但是要说一下与或非的问题。
python中提供了and,or,not来表示与或非,注意通常的”&“符号仍然同与一致但是”|“符号存在优先级问题,使用需要左右加上括号(True)|(False)否则容易出错。当然最好是直接使用三个关键字。

程序的异常处理

使用try和except来进行异常处理,

try:
	num = eval(input("请输入一个整数"))
	print(num**2)
except NameError:#定义异常类型
	print("输入不是整数")
else :#若try没有异常则执行
finally:#无论try有没有异常都执行

实例一:身体质量BMI值

#BMI指数
height, weight = eval(input("请输入身高(米)/体重(公斤)(用逗号隔开)"))
bmi = weight / (height**2)
if bmi < 18.5:
    who, nat = "偏瘦", "偏瘦"
elif bmi < 24:
    who, nat = "正常", "正常"
elif 24 <= bmi < 25:
    who, nat = "正常", "偏胖"
elif bmi < 28:
    who, nat = "偏胖", "偏胖"
elif 28 <=bmi < 30:
    who, nat = "偏胖", "肥胖"
else:
    who, nat = "肥胖", "肥胖"
print("BMI指标为:国内{},国际{}".format(nat, who))

注意,这里实现了一个多输入,eval()是把字符串的引号去掉,所以只要用逗号隔开,就可以用逗号进行多变量的赋值。

程序的循环结构

程序的循环主要由一种遍历循环for和无限循环while。

遍历循环

使用for<循环变量>in<遍历模块>: 来遍历遍历模块中的所有的元素。
1.计数循环
通过for i in range(n): 来重复某一操作n次。

for i in range(5):
	print(i)
#>>>打印出0,1,2,3,4
for i in range(1,6,2)
	print(i)
#>>>打印出1, 3, 5	这里就是以1为起点到6为止(不含6)步长为2进行遍历

2.字符串的遍历循环
字符串本质上也可以认为是一串字符组成的序列,也可以用遍历循环一个个去访问内部的字符,同样使用于列表,文件等。

for i in "python":
	print(i, end=",")
	#>>> p,y,t,h,o,n,
for i in ["We","Study","python"]
	print(i. end=",")
#>>> we,study,python
for line in fi: #fi是文件标识符,这里表示对文件中每一行进行遍历
	print(line)

无限循环

即通过条件控制循环,直到条件不成立才停止。

a = 3
while a > 0:
	a--

循环控制保留字

1.break
表示结束当前的循环结构,只跳出当前的最内层循环,对外层循环没有影响。
2.continue
只跳过当前此次的循环,继续做后面的循环

for i in "python":
	if(i==‘y‘):
		break
	print(i,end=",")
#>>>p,
for i in "python":
	if(i==‘y‘):
		continue
	print(i,end=",")
#>>>p,t,h,o,n,

循环的扩展用法

在循环之后可以增加else语句,即正常做完循环,没有执行break语句,则执行else部分,如果执行过break语句则跳过else语句部分。
着类似于异常处理过程中的结果。

random库

random库简介

是使用随机数的python标准库。
伪随机数:采用梅森旋转算法生成伪随机序列。
使用import random就可以直接使用了

基本随机函数

随机序列是先产生一个随机数种子,然后利用梅森旋转算法来产生一个随机数序列。

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

不使用seed就只能按照第一次调用random()的系统时间为种子,这会使得程序的结果很难再现,反之伪随机数显然是可以再现的。

扩展随机数函数

函数 功能
randomint(a, b) 生成一个a到b之间的随机整数
random.andomint10, 100)
#>>>64
randrange(m, n[, k]) 生成一个从m到n以k为步长的随机整数
random.randrange(10, 100, 10)
#>>>80
getrandbits(k) 生成一个k比特位的随机数
random.getrandbits(16)
#>>>28478
uniform(a, b) 生成一个从a到b的随机小数
random.uniform(10, 100)
#>>>46.32547893086732(默认精度16)
choice(seq) 从一个给定序列中选取一个元素
random.choice([1, 2, 3, 4, 5])
#>>> 3
shuffle(seq) 将一个序列顺序变为随机
random.shuffle([1, 2, 3, 4, 5])
>>>[5, 1, 4, 3, 2]

要求是掌握产生随机数种子,产生随机数序列,对随机数操作。

实例:圆周率的计算

通过蒙特卡洛方法来计算:在趋于内随机撒点,通过点的比例来计算圆的面积,从而得到圆周率。
可以用一个\来作为换行,这不影响程序的执行本身。

#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
start = perf_counter()
for i in range(1, Darts+1):
    x, y = random(), random()
    dist = pow(x*x+y*y, 0.5)
    if dist<1:
        hits+=1
pi = hits/Darts*4
print("圆周率为:{:.10f}".format(pi))
print("程序运行时间为:{}s".format(perf_counter() - start))

数学思维:可以用公式求解
计算思维:通过计算思维的方式,使用大量的数学计算来代替公式。


以上内容为学习嵩天老师的python语言程序设计第四周内容的笔记。感谢嵩天老师的团队给我们带来这样优质的课程。

中国大学生MOOC《Python语言程序设计》,嵩天 、黄天羽 、礼欣

Python学习(三)

原文:https://www.cnblogs.com/modered-study/p/14617958.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!