第5章課后習題參考答案
一、單選題文章來源:http://www.zghlxwxcb.cn/news/detail-472966.html
- 關于函數(shù)描述錯誤的是______。(答案為D)
A. 有利于簡化程序結(jié)構(gòu)
B. 有利于提高代碼的復用率,減少代碼冗余
C. 有利于程序模塊設計和多人分工協(xié)作
D. 有利于提高代碼的執(zhí)行速度
2.下列函數(shù)返回值的類型是______。(答案為C)
def func(x,y):
x=x+5
y=y+10
return x,y
A. int B. list C. tuple D. set
3.執(zhí)行下列程序后,屏幕輸出結(jié)果是______。(答案為A)
s=5
def f(x):
global s
s=s+x
return s
a=10
print(f(a))
A. 15 B. 5 C. 10 D. 程序報錯 - 以下不是函數(shù)作用的選項是______。(答案為B)
A. 增強代碼可讀性 B. 提高代碼執(zhí)行速度
C. 降低編程復雜度 D. 復用相同功能代碼 - Python 語句 “f=lambda x,y:x*y;print(f(12,34))” 的運行結(jié)果是______。(答案為D)
A. 12 B. 34 C. 45 D. 408 - 關于 lambda 函數(shù)的描述中,錯誤的是______。(答案為A)
A. lambda不是Python的保留字
B. lambda函數(shù)也稱為匿名函數(shù)
C. lambda函數(shù)不能包含return語句
D. lambda定義了一種特殊的函數(shù)
7. 可變參數(shù)**kw 收集關鍵字參數(shù),并將這些參數(shù)存儲到一個______中。(答案為C)
A. 列表 B. 元組 C. 字典 D. 數(shù)組
8. 以下選項中,對于遞歸程序的描述不正確的是________。(答案為C)
A. 書寫簡單 B. 遞歸程序都可以用非遞歸方法替代
C. 執(zhí)行效率高 D. 一定要有終止條件
9. 以下選項中,對于函數(shù)定義錯誤的是_______。(答案為A)
A. def vfunc(*a,b) B. def vfunc(a,b)
C. def vfunc(a,*b) D. def vfunc(a,b=2)
10. 關于Python的全局變量和局部變量,以下選項中描述錯誤的是?????? _______。????????????????????????(答案為C)
A. 全局變量指函數(shù)之外定義的變量,一般沒有縮進,在程序執(zhí)行全過程有效
B. 簡單數(shù)據(jù)類型變量無論是否與全局變量重名,僅在函數(shù)內(nèi)部創(chuàng)建和使用,函數(shù)退出后變量被釋放
C. 局部變量指在函數(shù)內(nèi)部使用的變量,當函數(shù)退出時,變量依然存在,下次函數(shù)調(diào)用可以繼續(xù)使用
D. 使用global保留字聲明簡單數(shù)據(jù)類型變量后,該變量作為全局變量使用
二、填空題 - Python中定義函數(shù)的關鍵字是________。(def)
2. 在函數(shù)內(nèi)部可以通過關鍵字_________來定義全局變量。(global)
3. 當函數(shù)的返回值不止一個時,默認的返回值是以_______類型出現(xiàn)。(元組)
3. 如果函數(shù)中沒有return語句或者return語句不帶任何返回值,則該函數(shù)的返回值為______。(None)
4. 函數(shù)返回時,傳入的組合數(shù)據(jù)類型變量________(會/不會)被釋放。(不會)
5. 已知f= lambda x:5,那么表達式f(3)的值為__________。(5)
6. 已知函數(shù)定義 def func(*p):return sum§,那么表達式func(1,2,3)的值為____________。(6) - 以下是“閉包”的一個例子,請目測下一個print(a())會輸出______?(10)
>>> def funX():
x=5
def funY():
nonlocal x
x+=1
return x
return funY
>>> a=funX()
>>> print(a())
>>> print(a())
>>> print(a())
>>> print(a())
三、設計題文章來源地址http://www.zghlxwxcb.cn/news/detail-472966.html
- 設計一個函數(shù),參數(shù)為整數(shù),返回斐波那契數(shù)列的前n項之和。
參考答案:
def sum(n):
a = 0
b = 1
sum = 0
for i in range(n):
sum += a
a, b = b, a + b
return sum
print("The sum of FIB is", sum(8),"!")
- 設計一個函數(shù),調(diào)用該函數(shù)能夠打印一個由指定字符組成的n行金字塔。其中,指定打印的字符和行數(shù)n分別由兩個形參表示。
參考答案:
def jzt(m,n):
for i in range(1,n):
print(' '*(20-(i-1)),m*(2*i-1))
a= int (input("輸入打印行數(shù):"))
b= str (input("要打印的字符:"))
jzt(b,a+1)
- 設計一個函數(shù),計算傳入字符串中數(shù)字、字母、空格以及其他類字符的個數(shù)。
參考答案:
def check(msg):
res = {'num': 0,'string': 0,'space': 0,'other': 0,}
for s in msg:
if s.isdigit(): #判斷屬于數(shù)字
res['num'] += 1
elif s.isalpha(): #判斷屬于字符串
res['string'] += 1
elif s.isspace(): #判斷屬于空格
res['space'] += 1
else:
res['other'] += 1
return res
res = check('hello name:jim passowrd:win2008')
#給函數(shù)傳入?yún)?shù)‘hello name:jim passowrd:win2008’
print(res)
#結(jié)果是{'num': 4, 'string': 23, 'space': 2, 'other': 2}
- 設計函數(shù),輸入?yún)?shù)n,判斷該數(shù)是否為水仙花數(shù)。
參考答案:
def sxh (z) :
q = z % 10
w = z // 10 % 10
e = z // 100
if z == q * q * q + w * w * w + e * e * e:
return True
exit(1)
return False
if sxh(153):
print("是水仙花數(shù)" )
else:
print("不是水仙花數(shù)")
- 設計一個函數(shù),求正整數(shù)的各位上的數(shù)字之和,要求遞歸思路實現(xiàn).
參考答案:
def sum_digits(number):
# Base Case
if number == 0:
return 0
else:
# Mod (%) by 10 gives you the rightmost digit (227 % 10 == 7),
# while doing integer division by 10 removes the rightmost
# digit (227 // 10 is 22)
return (number % 10) + sum_digits(number // 10)
print(sum_digits(57))
- 設計一個函數(shù),判斷一個數(shù)是否為素數(shù)?并求出所有四位數(shù)的素數(shù).
參考答案:
import math
def sushu(m):
k = int(math.sqrt(m))
for i in range(2, k+2):
if m % i == 0:
break
if i == k+1:
return True
else:
return False
a=int(input('請輸入一個數(shù):'))
if a==1:
print('1既不是素數(shù)也不是合數(shù)')
else:
if sushu(a)==True:
print(a,'是素數(shù)')
else:
print(a,'是合數(shù)')
print('四位數(shù)素數(shù)為:')
n=0
for i in range(1001,10000,2):
if sushu(i)==True:
if n%30==0:
print()
print(i,end=' ')
n=n+1
到了這里,關于Python 第5章課后習題參考答案的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!