本文是对《北理工 嵩天/黄天宇/礼欣 Python语言程序设计》的学习笔记,供自己查阅使用。
单分支结构
if <条件> :
<语句块>
二分支结构
if <条件> :
<语句块1>
else:
<语句块2>
二分支结构紧凑形式:适用于简单表达式的二分支结构
<表达式1> if <条件> else <表达式2>
print("猜{}了".format("对" if guess==99 else "错"))
多分支结构:
if <条件1> :
<语句块1>
elif <条件2> :
<语句块2>
……
else:
<语句块N>
<,<=,>=,>,==,!=
x and y,x or y,notx
try:
<语句块1>
except :
<语句块2>
try :
num= eval(input("请输入一个整数: "))
print(num**2)
except :
print("输入不是整数")
try:
<语句块1>
except <异常类型> :
<语句块2>
try :
num= eval(input("请输入一个整数: "))
print(num**2)
except NameError:
print("输入不是整数")
标注异常类型后,仅响应此类异常,异常类型名字等同于变量名。
异常处理的高级使用
try:
<语句块1>
except :
<语句块2>
else :
<语句块3>
finally :
<语句块4>
else对应语句块3在不发生异常时执行,finally对应语句块4一定执行
BMI:Body Mass Index
国际上常用的衡量人体肥胖和健康程度的重要标准,主要用于统计分析
定义:BMI = 体重(kg) / 身高2(m2)
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):
<语句块>
计数循环(特定次)
for i in range(M,N,K):
<语句块>
字符串遍历循环:s是字符串,遍历字符串每个字符,产生循环
for c in s:
<语句块>
列表遍历循环:ls是一个列表,遍历其每个元素,产生循环
for item in ls:
<语句块>
文件遍历循环:fi是一个文件标识符,遍历其每行,产生循环
for line in fi:
<语句块>
反复执行语句块,直到条件不满足时结束
while <条件> :
<语句块>
CTRL + C
退出执行
循环与else
for <变量> in <遍历结构> :
<语句块1>
else:
<语句块2>
或
while <条件> :
<语句块1>
else:
<语句块2>
当循环没有被break语句退出时,执行else语句块
else语句块作为"正常"完成循环的奖励
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
随机数种子,随机序列
>>>import random
>>>random.seed(10)
>>>random.random()
0.5714025946899135
>>>random.seed(10)
>>>random.random()
0.5714025946899135
设置种子,产生的随机数就不变了。
一行好几段代码,用分号
π = ∑ k = 0 ∞ [ 1 1 6 k ( 4 8 k + 1 − 2 8 k + 4 − 1 8 k + 5 − 1 8 k + 6 ) ] \pi=\sum\limits_{k=0}^{\infty}[\frac{1}{16^k}(\frac{4}{8k+1}-\frac{2}{8k+4}-\frac{1}{8k+5}-\frac{1}{8k+6})] π=k=0∑∞[16k1(8k+14−8k+42−8k+51−8k+61)]
#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))