目录
6-1 sdut-使用函数求a+aa+aaa++⋯+aa.....aaa(n个a)之和。
一、判断题
- 模块化设计程序时,尽可能使功能块内部耦合紧密,功能块之间耦合度低。 T
- 函数定义时,可以有多条return语句,但每调用一次该函数只会执行其中一条return。 T
- Python 函数名与变量命名规则一样。 T
- 可以从程序中的任何位置访问局部变量 F
- Python允许将多个参数传递给函数。 T
- 要给函数中的全局变量赋值,必须首先在函数中声明全局变量。 T
- 定义函数时,函数形参不需要声明其类型,也不需要指定函数的返回值类型。 T
- Lambda表达式只可以包含一个表达式,不允许包含其他复杂语句,但在表达式中可以调用其他函数,该表达式的计算结果相当于函数返回值。 T
- 在Python中,函数定义必须在函数调用之前。 T
- 在函数中可以没有return语句。 T
二、选择题
- 不是Python语言关键字的是:function
- 以下关于函数定义的描述错误的是: A.函数必须有返回值 B.函数使用return给出返回值 C.函数定义中可以指定无限多个参数 D.函数定义中可以为某些参数指定默认值
- 以下关于函数作用的描述错误的是: A.提高代码执行速度 B.复用代码 C.增强代码的可读性 D.降低编程复杂度
- 调用以下函数返回的值 def myfun(): pass NONE
- 导入模块的方式错误的是 A.import mo B.from mo import * C.import m from mo D.import mo as m 导入模块的方式可以是importmo,frommo import *或者importmo as m
- 下列有关函数的说法中,正确的是( )。 A.函数的定义必须在程序开头 B.函数定义后,其中的程序就可以自动执行 C.函数体与关键字def必须左对齐 D.函数定义后需要调用才会执行
- 使用( )关键字声明匿名函数。 A.def B.lambda C.func D.function
- 关于lambda函数,以下选项中描述错误的是()。 A.定义了一种特殊的函数 B.lambda函数将函数名作为函数结果返回 C.lambda函数也称为匿名函数 D.lambda不是Python的保留字
- 在一个函数中如局部变量和全局变量同名,则_________________。A.局部变量屏蔽全局变量 B.全局变量屏蔽局部变量 C.全局变量和局部变量都不可用 D.程序错误
- Python语言中的自定义函数若未用return语句返回值,则该函数返回的是( ) 。A.随机数 B.None C.0 D.不确定
三、函数题
6-1 sdut-使用函数求a+aa+aaa++⋯+aa.....aaa(n个a)之和。
给定两个均不超过9的正整数a和n,要求:编写函数fn(a,n), 求a+aa+aaa++⋯+aa⋯aa(n个a)之和,fn须返回的是数列之和。
- 函数接口定义:def fn(a,n): 其中, a 和 n 都是传入的参数。 a 的值在
[1, 9]
范围;n 是[1, 9]
区间内的个位数。函数返回数列之和。 - 裁判测试程序样例:
/* 请在这里填写答案 */
a,b=input().split()
s=fn(int(a),int(b))
print(s)
- 输入样例: 2 3 输出样例:246
def fn(a, n):
r = 0
s=0
for i in range(0, n):
r += a * 10 ** i
s+= r
return s
6-2 编写函数判断水仙花数
给定一个三位数n
,要求编写函数isflower(n)
判断n
是否为水仙花数,如果是,则返回True
,否则返回False
。所谓"水仙花数"是指一个3位数,其各位数字立方和等于该数本身。例如,153是一个水仙花数,因为153等于1的立方加上5的立方加上3的立方之和。
- 函数接口定义:isflower (n) 其中
n
是传入的参数,表示需要判断的三位数。n
的值的范围为[100,999]。 - 裁判测试程序样例:
/* 请在这里填写答案 */
n = eval(input())
if isflower(n)==True:
print('Yes')
else:
print('No')
- 输入样例: 371 输出样例:Yes
def isflower(n):
b=int(n%10)
c=int((n/10)%10)
d=int(n/100)
if(b**3+c**3+d**3==n):
return True
else:
return False
6-3 sdut-使用函数求区域内的素数之和
设计函数,求指定范围内的素数之和。 函数1:prime(p), 用户传入参数p
,若它为素数时返回True,否则返回False. 函数2:PrimeSum(m,n),返回区间[m, n]
内所有素数的和(其 中,1<=m<n)。
- 函数接口定义:在这里解释接口参数。例如:其中
N
和D
都是用户传入的参数。N
的值不超过int
的范围;D
是[0, 9]区间内的个位数。函数须返回N
中D
出现的次数。
prime(p),返回True表示p是素数,返回False表示p不是素数;
PrimeSum(m,n),函数返回素数之和。
- 裁判测试程序样例:
/* 请在这里填写答案 */
m,n=input().split()
m=int(m)
n=int(n)
print(PrimeSum(m,n))
- 输入样例: 1 10 输出样例:17
def prime(p):
flag = True;
for i in range(2,p):
if p % i == 0:
flag = False
break
return flag
def PrimeSum(m,n):
sum=0
for p in range(m+1,n+1):
if prime(p):
sum=sum+p
return sum
6-4 兔子繁殖
兔子繁殖问题。假设有一对新生的兔子,从第三个月开始他们每个月月初都生一对兔子,新生的兔子从第三个月月初开始又每个月又生一对兔子。按此规律,并假定兔子没有死亡,n(n<=20)个月月末共有多少对兔子?
- 函数接口定义:
rabit(n),n为第几个月
裁判测试程序样例:
n=int(input()) print(rabit(n))
- 输入样例1: 3 输出样例1:2
- 输入样例1: 5 输出样例1:5
def rabit(n):
if n==1 or n==2:
return 1
a=1
b=1
c=2
for i in range(n-2):
a=b
b=c
c=a+b
return b