MOOC《python语言程序设计》(第15次)程序的控制结构(第四周)

MOOC《python语言程序设计》(第15次)

程序的控制结构(第四周)21.7.25

文章目录

练习题

实例5:身体质量指数BMI

# 参考代码

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))

实例6:圆周率的计算

# 参考代码

from random import random, seed

DARTS = eval(input())
seed(123)
hits = 0.0
for i in range(DARTS):
    x, y = random(), random()
    dist = pow(x ** 2 + y ** 2, 0.5)
    if dist <= 1.0:
        hits = hits + 1
pi = 4 * (hits/DARTS)
print("{:.6f}".format(pi))

整数的加减和

'''
# 整数的加减和.py
1-2+3-4...966‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬
其中,所有数字为整数,从1开始递增,奇数为正,偶数为负
'''

s = 0
for i in range(0,967):
    if i%2 ==1:
        s +=i
    else:
        s -=i
print(s)

三位水仙花数

'''
描述:
"水仙花数"是指一个三位整数,其各位数字的3次方和等于该数本身。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬
例如:ABC是一个"3位水仙花数",则:A的3次方+B的3次方+C的3次方 = ABC
请按照从小到大的顺序输出所有的3位水仙花数,请用"逗号"分隔输出结果。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬
'''

s=''
for i in range(100,1000):
    a = i//100   # 百位
    b = i//10%10 # 十位
    c = i%10    # 个位
    if i == a**3+b**3+c**3:
        s=s+str(i)+','
print(s[:-1])

用户登录的三次机会

'''
描述:
给用户三次输入用户名和密码的机会,要求如下:
1)如输入第一行输入用户名为‘Kate’,第二行输入密码为‘666666’,输出‘登录成功
2)当一共有3次输入用户名或密码不正确输出“3次用户名或者密码均有误!退出程序。
'''

count = 3
while count:
    name = input()
    code = input()
    if name == 'Kate' and code == '666666':
        print('登录成功!')
        break
    else:
        count -= 1
if count == 0:
    print("3次用户名或者密码均有误!退出程序。")

单项选择题

1、哪个选项不符合上述程序空白处的语法要求?

for var in _____:
  print(var)

A、(1,2,3)

B、range(0,10)

C、{1;2;3;4;5}

D、“Hello”

正确答案 C

for … in … 中 in 的后面需要是一个迭代类型(组合类型),{1;2;3;4;5}不是Python的有效数据类型。

2、哪个选项是以上程序的输出结果?

for i in range(0,2):
  print(i)

A、1 2

B、1

C、0 1 2

D、0 1

正确答案 D

range(0, 2)输出两个值:0和1。

3、哪个选项给出了上述程序的输出次数?‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

k = 10000
while k>1:
  print(k)
  k=k/2

A、1000

B、15

C、14

D、13

正确答案 C

4、‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬哪个选项是程序的三种基本结构?‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

A、顺序结构,跳转结构,循环结构

B、过程结构,对象结构,函数结构

C、过程结构,循环结构,分支结构

D、顺序结构,循环结构,分支结构

正确答案 D

无对象结构、跳转结构、过程结构等说法。

5、哪个选项关于循环结构的描述是错误的?‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

A、循环是程序根据条件判断结果向后反复执行的一种运行方式

B、条件循环和遍历循环结构都是基本的循环结构

C、循环是一种程序的基本控制结构

D、死循环无法退出,没有任何作用

正确答案 D

死循环能够用于测试性能,形式上的死循环可以用break来退出,例如:

x = 10
while True:
    x = x - 1
    if x == 1:
         break

死循环是有其作用的。

6、关于Python语句P= -P,哪个选项的描述是正确的?‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

A、P等于它的负数

B、给P赋值为它的负数

C、P=0

D、P的绝对值

正确答案 B

Python中的=是赋值符号,==是判断相等性的等于符号。

7、哪个选项是用来判断当前Python语句在分支结构中?‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

A、大括号

B、冒号

C、缩进

D、引号

正确答案 C

缩进表达层次关系。

8、哪个选项是下面代码的执行结果?‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

for s in "PYTHON":
   if s=='T':
      continue
   print(s,end="")

A、PYHON

B、TT

C、PY

D、PYTHON

正确答案 A

continue结束当次循环,但不跳出当前循环。

9、哪个选项是random库中用于生成随机小数的函数?‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

A、randint()

B、random()

C、randrange()

D、getrandbits()

正确答案 B

randint()、getrandbits()、randrange()都产生随机整数,random()产生0到1之间的随机小数。

10、关于try-except,哪个选项的描述是错误的?‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

A、表达了一种分支结构的特点

B、NameError是一种异常类型

C、使用了异常处理,程序将不会再出错

D、用于对程序的异常进行捕捉和处理

正确答案 C

使用了异常处理,程序可能运行不会出错,但逻辑上可能出错。程序错误是一个大概念,不仅指代码运行错误,更代表功能逻辑错误。

程序设计题

四位玫瑰树

'''
描述‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬:
四位玫瑰数是4位数的自幂数。自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬
例如:当n为3时,有1^3 + 5^3 + 3^3 = 153,153即是n为3时的一个自幂数,3位数的自幂数被称为水仙花数。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬
请输出所有4位数的四位玫瑰数,按照从小到大顺序,每个数字一行。
'''

s = ""
for i in range(1000, 10000):
    t = str(i)
    if pow(eval(t[0]),4) + pow(eval(t[1]),4) + pow(eval(t[2]),4) + pow(eval(t[3]),4) == i :
        print(i)

100以内素数之和

'''
描述
求100以内所有素数之和并输出。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬
素数指从大于1,且仅能被1和自己整除的整数。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬
提示:可以逐一判断100以内每个数是否为素数,然后求和。
'''
s = 0
for i in range(2,100):
    flag = 0                # flag标记是否为素数。0是素数,1不是
    for j in range(2,i//2+1):
        if i%j ==0:
            flag = 1
            break
    if not flag :
        s+=i
print(s)

学习笔记

1、程序的分支结构

1.1 单分支结构 ( if )
1.2 二分支结构 ( if-else )

----紧凑形式:<表达式1> if <条件> else <表达式2>

1.3 多分支结构 ( if-elif-else )
1.4 条件判断

操作符:<,<=,>=,>,==,!=

保留字:and,or,not

1.5 程序的异常处理

try—except—else—finally

#1
try<语句块1>
except <异常类型>:
  <语句块2>
#------------------------------------------------------- 
#2 
try<语句块1>
except:
  <语句块2>
else:
  <语句块3>	# 在不发生异常时执行
finally:
  <语句块4>	# 一定会执行

2、实例5:身体质量指数BMI

'''
BMI:对身体质量的刻画
--国际上常用的衡量人体肥胖和健康程度的标准
--定义:BMI=体重(kg)/身高²(㎡)
'''

# 思路1:分别计算并给出国际和国内BIM分类

# 思路2:混合计算并给出国际和国内的BMI分类

# 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))

3、程序的循环结构

3.1 遍历循环
for <循环变量> in <遍历结构><语句块>

'''
应用:
	计数循环:		for i in range(M,N,K):
	字符串遍历循环:	for c in s:
	列表遍历循环:	for item in ls:
	文件循环变量:	for line in fi:		# 遍历每一行
'''  
3.2 无限循环
while <条件> :
  <语句块>
# ctrl+c 退出无限循环
3.3 循环控制保留字

break:跳出并结束当前整个循环,执行循环后的语句

continue:结束当次循环,继续执行后续次数的循环

3.4 循环的扩展
for <循环变量> in <遍历结构>:
  <语句块1>
else:
  <语句块2>
  
# -----------------------------------
while <条件>:
  <语句块1>
else:
  <语句块2>
# 当循环没有被break语句退出时,执行else语句块
# 与异常处理的else用法相似

4、模块3:random库

4.1 random库概述

random库是使用随机数的Pyhton标准库

伪随机数:采用梅森旋转算法生成的(伪)随机序列元素

—基本随机数函数: seed()、random()
—扩展随机数函数: randint()、getrandbits()、uniform()、randrange()、choice()、 shuffle()

4.2 基本随机函数
函数描述
seed(a=None)初始化给定的随机数种子,默认为当前系统时间
random()生成一个[0.0,1.0)之间的随机小数
4.3 扩展随机函数
函数描述
randint(a,b)生成一个[a,b]之间的整数
randrange(m,n[,k])生成一个[m,n)之间以k为步长的随机整数
getrandbiits(k)生成一个k比特长的随机整数
uniform(a,b)生成一个[a,b]之间的随机小数
choice(seq)序列seq中随机选择一个元素
shuffle(seq)序列seq中 元素随机排列,返回打乱后的序列

5、实例6:圆周率的计算

# 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))

资料来源:
Python语言程序设计_北京理工大学_中国大学MOOC(慕课) https://www.icourse163.org/course/BIT-268001

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值