1. 程式人生 > 其它 >python期末複習(5.2)

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