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

 

posted @ 2022-05-12 10:33  卜算子1937  阅读(670)  评论(0编辑  收藏  举报