python第五周小测验答案_MOOC《Python语言程序设计》第五周测试题

MOOC《Python语言程序设计》第五周测试题

单项选择题

1.以下选项不是函数作用的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

A.复用代码

B.增强代码可读性

C.降低编程复杂度

D.提高代码执行速度

正确答案 D

函数不能直接提高代码执行速度。

2.下列程序的输出结果为:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

def f(a,b):

a=4

return a+b

def main():

a=5

b=6

print(f(a,b),a+b)

main()

A.10 10

B.11 11

C.11 10

D.10 11

正确答案 D

这里没有全局变量,都是函数局部变量的运算。

3.以下关于Python函数说法错误的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

def func(a,b):

c=a**2+b

b=a

return c

a=10

b=100

c=func(a,b)+a

A.执行该函数后,变量b的值为100

B.该函数名称为func

C.执行该函数后,变量c的值为200

D.执行该函数后,变量a的值为10

正确答案 C

这里没有全局变量,请在IDLE中执行代码观察结果。

4.以下关于函数调用描述正确的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

A.自定义函数调用前必须定义

B.函数在调用前不需要定义,拿来即用就好

C.函数和调用只能发生在同一个文件中

D.Python内置函数调用前需要引用相应的库

正确答案 A

函数调用前必须已经存在函数定义,否则无法执行。Python内置函数直接使用,不需要引用任何模块。

5.以下关于模块化设计描述错误的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

A.高耦合度的特点是复用较为困难

B.模块间关系尽可能简单,模块之间耦合度低

C.应尽可能合理划分功能块,功能块内部耦合度高

D.应尽可能合理划分功能块,功能块内部耦合度低

正确答案 D

模块内高耦合、模块间低耦合。

6.以下对递归描述错误的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

A.一定要有基例

B.递归程序都可以有非递归编写方法

C.书写简单

D.执行效率高

正确答案 D

递归不提高程序执行效率。任何递归程序都可以通过堆栈或队列变成非递归程序(这是程序的高级应用)。

7.以下关于函数说法错误的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

A.对函数的使用必须了解其内部实现原理

B.函数是一段具有特定功能的、可重用的语句组

C.函数可以看做是一段具有名字的子程序

D.函数通过函数名来调用

正确答案 A

调用函数不需要知道函数内部实现原理,只需要知道调用方法(即接口)即可。

8.哪个选项对于函数的定义是错误的?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

A.def vfunc(*a,b):

B.def vfunc(a,b=2):

C.def vfunc(a,*b):

D.def vfunc(a,b):

正确答案 A

def vfunc(*a, b) 是错误的定义:*a表示可变参数,可变参数只能放在函数参数的最后。

9.关于return语句,以下选项描述正确的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

A.函数中最多只有一个return语句

B.return只能返回一个值

C.函数必须有一个return语句

D.函数可以没有return语句

正确答案 D

函数可以包含0个或多个return语句

10.下关于递归函数基例的说法错误的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

A.递归函数的基例不再进行递归

B.递归函数的基例决定递归的深度

C.递归函数必须有基例

D.每个递归函数都只能有一个基例

正确答案 D

每个递归函数至少存在一个基例,但可能存在多个基例。

编程题:

11.随机密码生成

描述

补充编程模板中代码,完成如下功能:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

以整数17为随机数种子,获取用户输入整数N为长度,产生3个长度为N位的密码,密码的每位是一个数字。每个密码单独一行输出。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

产生密码采用random.randint()函数。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

输入输出示例

输入

输出

示例 1

3

634

524

926

我的代码

import random

def genpwd(length):

a=pow(10,length-1)

b=pow(10,length) #应改为b=pow(10,length)-1

return random.randint(a,b)

length = eval(input())

random.seed(17)

for i in range(3):

print("{}".format(genpwd(length)),end="\n") #要求分行输出

参考代码

import random

def genpwd(length):

a = 10**(length-1)

b = 10**length - 1

return "{}".format(random.randint(a, b))

length = eval(input())

random.seed(17)

for i in range(3):

print(genpwd(length))

12.连续质数计算

描述

补充编程模板中代码,完成如下功能:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

获得用户输入数字N,计算并输出从N开始的5个质数,单行输出,质数间用逗号,分割。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

注意:需要考虑用户输入的数字N可能是浮点数,应对输入取整数;最后一个输出后不用逗号。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

输入输出示例

输入

输出

示例 1

12

13,17,19,23,29

我的代码

def prime(m):

if m==2:

return True

else:

for i in range(2,m):

c=m%i

if c==0:

return False

elif i>m//2:

return True

n = eval(input())

if n!=int(n):

n=int(n)+1

if n<=1:

n=2

counter=0

while counter<5:

if prime(n) and counter==4:

print(n)

counter+=1

elif prime(n) and counter<5:

print("{},".format(n),end="")

counter+=1

n+=1

print("{},".format(n),end="")

n+=1

counter+=1

else:

n+=1

参考代码

def prime(m):

for i in range(2,m):

if m % i == 0:

return False

return True

n = eval(input())

n_ = int(n)

n_ = n_+1 if n_ < n else n_

count = 5

while count > 0:

if prime(n_):

if count > 1:

print(n_, end=",")

else:

print(n_, end="")

count -= 1

n_ += 1

参考代码更为简洁!但有一疑问,参考代码能否判断出2是质数?

注:仅为记录学习过程

原文链接:https://blog.csdn.net/jingwushikong/article/details/104957332

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值