python期末复习(5.2)
第5章课后小测
1、
ls = [] def func(a, b): ls.append(b) return a*b s = func("hi", 2) print(s, ls)
输出结果是hihi[2]
2、函数的定义中错误的是def vfunc(*a,b)
3、关于程序说法正确的是
ls = [] def func(a, b): ls.append(b) return a*b s = func("hi", 2) print(s, ls)
1)count是一个递归函数
2)函数的基例是N >9;
3) 调用count(6)时,count函数返回前被调用5次
4、
def my_function(s,*ks): print(ks[0]) my_function("a", "b", "c")
运行结果是“b”
5、
def test(): return 'abc', 100, [0, 1, 2] a, b, c = test() print(a)
输出结果是'abc'
6、 关于函数调用,出错的函数是f({1,2})
def f(s): return s+s
而f([1,2])、f('a')、f((1,2))
7、递归函数特点:函数内部包含对本函数的再次调用
8、关于递归函数说法错误的是:每个函数都只能有一个基例
9、不属于递归特征的是:基例需要多次递归循环
10、对递归描述错误的是:执行效率高
11、
def reverse (s):
return reverse (s[1:])+s[0]
运行会出错
12、说法正确的是
def reverse (s): if s=="": return s else: return reverse (s[1:])+s[0]
1)代码的作用是实现字符串的反转
2)基例是空字符串
3)s[1:]是除首字母外的剩余字符串
13、关于模块化设计描述正确的是
1)尽可能合理划分功能块,功能块内部耦合度高
2)模块间关系尽可能简单,模块之间耦合度低
3)高耦合度的特点使复用较为困难
14、函数是程序的抽象,通过封装实现代码复用,可以利用函数对程序进行模块化设计
15、计算pi(n)不适合使用递归实现
16、
cnum= 1 acc= 0 def rsum(): global cnum global acc if cnum== 6: return acc else: acc = acc + cnum cnum = cnum + 1 return rsum()
说法正确的有
1)rsum是一个递归函数
2)函数的基例是cnum == 6
3) 调用rsum()时,rsum函数返回前被调用5次
4)调用rsum()时,函数返回值是21
17、函数调用错误的是vfunc()
18、
def f(s): return s+s
函数调用时,参数不可以是集合类型
19、
c=1 def add(): c=100 return c+1
调用add()以后,c的值为101
20、
n = 0 def func(a,b): n = b return a+n s = func(1, 2) print(s, n)
语句的输出结果是3 0
21、
x = 54321 y = 0 fac = 10000 while x: y += fac*(x%10) x = x//10 print(y) print(x+y)
#运行结果是
150000
150000
22、
a,b,c=-2,4,6 s,w,t=1,3,5 if c>0: s=a+b if a<=0: if c<=0: w=a-b else: if c>0: w=a-b else: t=c #else以后的结果没有机会运行c=a+b
print("a={},b={},c={}".format(a,b,c))
print("s={},w={},t={}".format(s,w,t))
#运行结果
a=-2,b=4,c=2
s=2,w=3,t=5
23、
sum = 0 for i in range(1,100): sum = sum+i print(sum)
24、
sum = 0 i = 100 while i>0: if i%3==0: sum = sum + 1 i=i-1 print(sum)
25、
len = eval(input("输入要打印的行数:")) for i in range(len): for j in range(0, len - i): print(end=" ") for t in range(2 * i + 1): print("*", end="") print()
26、
m=eval(input("请输入一个整数:"))
t=0
for i in range(2,m):
if m%i==0:
t=1
break #退出循环
if t==0:
print(m,"是素数")
else:
print(m,"不是素数")
27、
n=eval(input("请输入一个正整数:")) s=str(n)+"=1" #保存结果,最后再输出 ,是因为后面的因式分解是在循环中计算的,刚开始并没有列入式子 a=2 while n>=a: if n%a==0: s=s+"*"+ str(a) n=n//a else: a=a+1print(s)
28、输出m个1-10范围内的随机浮点数,计算并显示其平均值
import random random.seed(100) m=eval(input()) s=0 for j in range(m): f=random.uniform(1,10) s+=f print(f) print('平均值是:',s/m)
29、输入整数n,计算12+22+...+n2的值
def f(n): sum = 0 for i in range(n): sum = sum + (i+1)*(i+1)return sum n = int(input("请输入数字:")) r = f(n) print("1~{}的平方和是{}".format(n, r))
30、
def fib(n): if n==1 or n==2: return 1 else: return fib(n-1)+fib(n-2) n = eval(input(“输入正整数N”)) print(fib(n))
31、
def reverse(s): if s=="": return s else: return s[1:]+ s[0] str = input("请输入一个字符串: ") print(reverse(str))
32、
def myMax(a,b): if a>b: return a else: return b a = eval(input()) b = eval(input()) print(myMax(a,b))
33、
def mul(n): if n==1: return 1else: return mul(n-1)*n n = int(input()) print(mul(n))