分支结构
- 单分支:
if 条件:
语句
- 双分支
if 条件1:
语句
else:
语句2
- 多分支
if 条件1:
语句
elif 条件2:
语句
.
.
elif 条件n:
语句
else:
语句
程序的异常处理
异常处理的基本使用
try:
语句1
except:
语句2
try:
num=eval(input("请输入一个整数“))
print(num**2)
except:
print("输入的不是整数")
异常处理的高级使用
身体指数BMI值的实例:
#calbmi.py
height,weight=eval(input("请输入身高和体重(用逗号隔开):"))
bmi=weight/pow(height,2)
print("BMI:{:.2f}".format(bmi))
who=""
if bmi<18.5:
who="偏瘦"
elif 18.5<=bmi<25:
who="正常"
if 25<=bmi<30:
who="偏胖"
else:
who="肥胖"
print("BMI指标为:国际'{0}'".format(who))
#CalBMIv3.py
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 <遍历结构>:
语句块 - 由保留字for和in组成,完整遍历所有元素后结束
- 每次循环,所获得元素放入循环变量,并执行一次语句块
遍历循环的应用 - 计数循环(N次)
for i in range(N):
语句块 - 遍历由range()函数产生的数字序列,产生循环
或者range(n,m,z):表示:n开始到m,z为步长 - 字符串循环:
for c in s:
语句块 - s是字符串,遍历字符串每个字符,产生循环
- 列表遍历循环:
for item in ls:
语句块 - ls是一个列表,遍历每个元素,产生循环
- 文件遍历循环
for line in fi:
语句块 - fi是一个文件标识符,遍历每行,产生循
无限循环
如果程序进入无限循环,可用Ctrl+c退出
死循环可以用于程序性能的测试
random库的介绍随机数的Python标准库
用于生成随机数
import random
随机数种子的作用:在下次用random函数生成随机数时,我们用相同的种子,可以产生相同的随机数序列
圆周率的计算实例
公式法计算:
#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))
求100以内所有素数之和并输出。
素数指从大于1,且仅能被1和自己整除的整数。
提示:可以逐一判断100以内每个数是否为素数,然后求和。
a=0
for i in range(2,100):
b=int(pow(i,0.5))+1
for j in range(2,b):
if i%j==0:
break
else: #在没有执行break后就表示是素数,将该数加入和中
a+=i
print(a)
四位玫瑰数是4位数的自幂数。自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。
例如:当n为3时,有1^3 + 5^3 + 3^3 = 153,153即是n为3时的一个自幂数,3位数的自幂数被称为水仙花数。
请输出所有4位数的四位玫瑰数,按照从小到大顺序,每个数字一行。
for i in range(1000,10000):
a = int(i/1000)
b = int(i%1000/100)
c = int(i%100/10)
d = int(i%10)
if pow(a,4)+pow(b,4)+pow(c,4)+pow(d,4)==i:
print(i)
编写程序计算如下数列的值:
1-2+3-4…966
其中,所有数字为整数,从1开始递增,奇数为正,偶数为负
s=0
count=1
while count<=966:
if count%2==0:
s-=count
else:
s+=count
count+=1
print(s)
“水仙花数"是指一个三位整数,其各位数字的3次方和等于该数本身。
例如:ABC是一个"3位水仙花数”,则:A的3次方+B的3次方+C的3次方 = ABC。
请按照从小到大的顺序输出所有的3位水仙花数,请用"逗号"分隔输出结果。
s = ""
for i in range(100, 1000):
t = str(i)
if pow(eval(t[0]),3) + pow(eval(t[1]),3) + pow(eval(t[2]),3) == i :
s += "{},".format(i)
print(s[:-1])#这里采用了s[:-1]方式不输出最后一个逗号
给用户三次输入用户名和密码的机会,要求如下:
1)如输入第一行输入用户名为‘Kate’,第二行输入密码为‘666666’,输出‘登录成功!’,退出程序;
2)当一共有3次输入用户名或密码不正确输出“3次用户名或者密码均有误!退出程序。”。
#此代码知识部分正确
name=input()
number=input()
for i in range(3):
if name=="kate" and number=="666666":
print("登录成功!")
break
else:
print("3次用户名或者密码均有误!退出程序。")
count = 0
while count < 3:
name = input()
password = input()
if name == 'Kate'and password == '666666':
print("登录成功!")
break
else:
count += 1
if count == 3:
print("3次用户名或者密码均有误!退出程序。")