Python学习第四期程序控制结构

分支结构

  • 单分支:

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次用户名或者密码均有误!退出程序。")
发布了43 篇原创文章 · 获赞 11 · 访问量 2610

猜你喜欢

转载自blog.csdn.net/weixin_43328816/article/details/97803731