第一題:int
十多年的蓮花網站建設經驗,針對設計、前端、開發、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。營銷型網站建設的優勢是能夠根據用戶設備顯示端的尺寸不同,自動調整蓮花建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現優雅布局與設計,從而大程度地提升瀏覽體驗。創新互聯從事“蓮花網站設計”,“蓮花網站推廣”以來,每個客戶項目都認真落實執行。
第二題:-1
第三題:list
第四題:key in dict
第五題:false
第六題:return
第七題:開源
第八題:
第九題:dict.get(key)
第十題:(1)無參數,無返回值;(2)無參數,有返回值的函數;(3)有參數,無返回值的函數;(4)有參數,有返回值的函數
在前面已經多次提到函數這個概念,之所以沒有解釋什么是函數,是因為程序中的函數和數學中的函數差不多,如input()、range()等都是函數,這些都是Python的標準函數,直接使用就可以了。根據需要,用戶也可以自定義函數。
12.1 函數
函數的結構:
def 函數名(參數):
函數體
return 返回值
例如:數學中的函數f(x)=2x+5在Python中可以定義如下:
def f(x):
y=2*x+5
return(y)
如果x取值為3,可以使用如下語句調用函數:
f(3)
下面給出完整的程序代碼:
def f(x):
y=2*x+5
return(y)
res=f(3)
print(res)
運行結果:11
如上例中的x是函數f(x)的參數,有時也被稱為形式參數(簡稱形參),在函數被調用時,x被具體的值3替換y就是函數的返回值,這個值3也被稱為實際參數(簡稱實參)。
上例中的y是函數f(x)的返回值。并不是所有的函數都有參數和返回值。如下面的函數:
def func():
print('此為無參數傳遞、無返回值的函數')
func()
輸出結果:此為無參數傳遞、無返回值的函數
可以看出,該函數func()無參數,故調用時不用賦給參數值。
函數也可以有多個參數,如f(x,y)=x2+y2,可用Python語言定義如下:
def f(x,y):
z=x**2+y**2
return z
print(f(2,3)) #調用函數f(x,y)
輸出結果:13
也可以通過直接給參數列表中的參數賦值的方法,為參數添加默認值,如果用戶賦予參數值,則按照用戶賦值執行,否則使用默認值。例如:
def f(x,y=3):
z=x**2+y**2
return z
若調用時參數列表為(2,1),即x賦值為2,y賦值為1:
print(f(2,1))
輸出結果為:5
若調用時參數列表為(2),即x賦值為2,y賦值省缺,則y使用默認值:
print(f(2))
輸出結果為:13
回調函數,又稱函數回調,是將函數作為另一函數的參數。
例如:
def func(fun,m,n):
fun(m,n)
def f_add(m,n):
print('m+n=',m+n)
def f_mult(m,n):
print('m*n=',m*n)
func(f_add,2,3)
func(f_mult,2,3)
輸出結果:
m+n= 5
m*n= 6
在f_add(m,n)和f_mult(m,n)被定義前,func(fun,m,n)中的fun(m,n)就已經調用了這兩個函數,即“先調用后定義”,這也是回調函數的特點。
如果無法預知參數的個數,可以在參數前面加上*號,這種參數實際上對應元組類型。譬如,參會的人數事先不能確定,只能根據與會人員名單輸入:
def func(*names):
print('今天與會人員有:')
for name in names:
print(name)
func('張小兵','陳曉梅','李大海','王長江')
運行后,輸出結果為:
今天與會人員有:
張小兵
陳曉梅
李大海
王長江
參數為字典類型,需要在參數前面加上**號。
def func(**kwargs):
for i in kwargs:
print(i,kwargs[i])
func(a='a1',b='b1',c='c1')
輸出結果為:
a a1
b b1
c c1
一個有趣的實例:
def func(x,y,z,*args,**kwargs):
print(x,y,z)
print(args)
print(kwargs)
func('a','b','c','Python','is easy',py='python',j='java',ph='php')
輸出結果:
a b c # 前三個實參賦給前三個形參
('Python', 'is easy') # *args接收元組數據
{'py': 'python', 'j': 'java', 'ph': 'php'} # **kwargs接收字典數據
12.2 變量的作用域
變量的作用域即變量的有效范圍,可分為全局變量和局部變量。
局部變量
在函數中定義的變量就是局部變量,局部變量的作用域僅限于函數內部使用。
全局變量
在主程序中定義的變量就是全局變量,但在函數中用關鍵字global修飾的變量也可以當做全局變量來使用。
全局變量的作用域是整個程序,也就是說,全局變量可以在整個程序中可以訪問。
下面通過實例去討論:
程序1:
a=1 # a為全局變量
def a_add():
print('a的初值:',a) # 在函數中讀取a的值
a_add() # 調用函數a_add()
a+=1 # 主程序語句,a增加1
print('a現在的值是:',a) # 主程序語句,讀取a的值
運行結果:
a的初值: 1
a現在的值是: 2
這個結果和我們想象的一樣,全局變量a既可以在主程序中讀取,也可以在子程序(函數)中讀取。
程序2:
a=1
def a_add():
a+=1
print('a的初值:',a)
a_add()
print('a現在的值是:',a)
運行程序1時出現如下錯誤提示:
UnboundLocalError: local variable 'a' referenced before assignment
意思是:局部變量'a'在賦值之前被引用。
從語法上來講,該程序沒有錯誤。首先定義了一個全局變量a并賦值為1,又定義了一個函數a_add(),函數內的語句a+=1就是出錯的根源,雖然我們的初衷是想讓全局變量a的值增加1,但從錯誤提示看,這個語句中的a并不是全局變量,而是局部變量。看來,在函數中讀取全局變量的值是沒有問題的(在程序1中已經得到了驗證),但要在函數中改變全局變量的值是不行的(在程序2的錯誤提示a+=1中的a 是局部變量,而非全局變量)。
怎樣解決這個問題?
程序3:
a=1
def a_add(x):
x+=1
return x
print('a的初值:',a)
a=a_add(a)
print('a現在的值是:',a)
運行結果:
a的初值: 1
a現在的值是: 2
結果的確是正確的,但在函數a_add(x)中沒有調用變量a(沒有出現變量a)。
程序4:
a=1
def a_add(a):
a+=1
return a
print('a的初值:',a)
a=a_add(a)
print('a現在的值是:',a)
運行結果:
a的初值: 1
a現在的值是: 2
對比程序4和程序3不難發現,其實程序4只是簡單的把函數的參數x變成了a,這個a的實質和程序3中的x還是一樣的。這進一步證實,函數中的a是局部變量,與主程序的全局變量a有著本質的區別。
程序5:
a=1
def a_add():
global a
a+=1
print('a的初值:',a)
a_add()
print('a現在的值是:',a)
運行結果:
a的初值: 1
a現在的值是: 2
程序5和程序2相比較,僅僅是在函數中添加了一個定義“global a”,此時的局部變量a就可以當做全局變量使用,由于它和全局變量a同名,自然也就不用區分a究竟是全局變量還是局部變量了,在主程序和該函數內都可以訪問、修改變量a的值了。
雖然使用global可使變量使用起來非常方便,但也容易引起混淆,故在使用過程中還是謹慎為好。
12.3 函數的遞歸與嵌套
遞歸,就是函數調用它自身。遞歸必須設置停止條件,否則函數將無法終止,形成死循環。
以計算階乘為例:
def func(n):
if n==1:
return 1
else:
return n*func(n-1) #func( )調用func( )
print(func(5))
運行結果為:120
嵌套,指在函數中調用另外的函數。這是程序中常見的一種結構,在此不再贅述。
匿名函數
Python中可以在參數前加上關鍵字lambda定義一個匿名函數,這樣的函數一般都屬于“一次性”的。
例如:
程序1:這是一個常規的函數定義和調用。
def f_add(x,y):
return x+y
print(f_add(2,3))
輸出結果:5
程序2:使用lambda定義匿名函數。
f_add=lambda x,y:x+y
print(f_add(2,3))
輸出結果:5
從上面的代碼可以看出,使用lambda僅僅減少了一行代碼。f_add=lambda x,y:x+y中的f_add不是變量名,而是函數名。程序1和程序2的print( )語句中的參數都是一樣的——調用函數f_add( )。所以,匿名函數并沒有太多的優點。
Python函數:
函數是組織好的,可重復使用的,用來實現單一或相關聯功能的代碼段。
函數能提高應用的模塊性,和代碼的重復利用率。已經知道Python提供了許多內建函數,比如print()。但也可以自己創建函數,這被叫做用戶自定義函數。
函數調用:
定義一個函數只給了函數一個名稱,指定了函數里包含的參數,和代碼塊結構。
這個函數的基本結構完成以后,可以通過另一個函數調用執行,也可以直接從Python提示符執行。
1.以下關于程序設計語言的描述,錯誤的選項是:
A Python語言是一種腳本編程語言
B 匯編語言是直接操作計算機硬件的編程語言
C 程序設計語言經歷了機器語言、匯編語言、腳本語言三個階段
D 編譯和解釋的區別是一次性翻譯程序還是每次執行時都要翻譯程序
正確答案: C
2.表達式 1001 == 0x3e7 的結果是:
A false
B False
C true
D True
正確答案: B
3.以下選項,不是Python保留字的選項是:
A del
B pass
C not
D string
正確答案: D
4.表達式 eval(‘500/10’) 的結果是:
A ‘500/10’
B 500/10
C 50
D 50.0
正確答案: D
5.表達式 type(eval(‘45’)) 的結果是:
A
B
C None
D
正確答案: D
6.表達式 pmod(20,3) 的結果是:
A 6, 2
B 6
C 2
D (6, 2)
正確答案: D
7.以下關于字符串類型的操作的描述,錯誤的是:
A str.replace(x,y)方法把字符串str中所有的x子串都替換成y
B 想把一個字符串str所有的字符都大寫,用str.upper()
C 想獲取字符串str的長度,用字符串處理函數 str.len()
D 設 x = ’aa’ ,則執行x*3的結果是‘aaaaaa’
正確答案: C
8.設 str = ‘python’,想把字符串的第一個字母大寫,其他字母還是小寫,正確的選項是:
A print(str[0].upper()+str[1:])
B print(str[1].upper()+str[-1:1])
C print(str[0].upper()+str[1:-1])
D print(str[1].upper()+str[2:])
正確答案: A
9.以下選項,不屬于程序流程圖基本元素的是:
A 循環框
B 連接點
C 判斷框
D 起始框
正確答案: A
10.以下關于循環結構的描述,錯誤的是:
A 遍歷循環使用for in 語句,其中循環結構不能是文件
B 使用range()函數可以指定for循環的次數
C for i in range(5)表示循環5次,i的值是從0到4
D 用字符串做循環結構的時候,循環的次數是字符串的長度
正確答案: A
11.執行以下程序,輸入”93python22”,輸出結果是:
A python9322
B python
C 93python22
D 9322
正確答案: C
A la
B 請輸入整數
C pythonpython
D python
正確答案: C
A 2
B 請輸入q退出:
C 3
D 1
正確答案: A
14.以下程序的輸出結果是:
A 0
B 2
C UnboundLocalError
D 5
正確答案: A
A 18 None
B 10 18
C UnboundLocalError
D 18 18
正確答案: B
def test( b = 2, a = 4):
global z
z += a * b
return z
z = 10
print(test(),z)
18,18
17.以下程序的輸出結果是:
A 22.0 None
B 10 None
C 22 None
D 10.0 22.0
正確答案: B
18.以下表達式,正確定義了一個集合數據對象的是:
A x = { 200, ’flg’, 20.3}
B x = ( 200, ’flg’, 20.3)
C x = [ 200, ’flg’, 20.3 ]
D x = {‘flg’ : 20.3}
正確答案: A
19.以下程序的輸出結果是:
A [‘z’, ‘j’, ‘s’, ‘y’]
B [‘j’, ‘s’, ‘y’, ‘z’]
C [‘j’, ‘z’, ‘z’, ‘s’, ‘z’, ‘y’, ‘j’]
D [‘j’, ‘j’, ‘s’, ‘y’, ‘z’, ‘z’, ‘z’]
正確答案: B
20.以下程序的輸出結果是:
A htslbht
B hlbst
C tsblh
D hhlstt
正確答案: B
21.已知id(ls1) = 4404896968,以下程序的輸出結果是:
A 4404896968 4404896904
B 4404896904 4404896968
C 4404896968 4404896968
D 4404896904 4404896904
正確答案: A
A [‘300’,‘200’,‘400’]
B [‘shandong’, ‘hebei’, ‘beijing’]
C [300,200,400]
D ‘shandong’, ‘hebei’, ‘beijing’
正確答案: B
23.以下關于文件的描述,錯誤的是:
A 二進制文件和文本文件的操作步驟都是“打開-操作-關閉”
B open() 打開文件之后,文件的內容并沒有在內存中
C open()只能打開一個已經存在的文件
D 文件讀寫之后,要調用close()才能確保文件被保存在磁盤中了
正確答案: C
24.以下程序輸出到文件text.csv里的結果是:
A [90,87,93]
B 90,87,93
C ‘[90,87,93]’
D ‘90,87,93’
正確答案: B
25.以下程序的輸出結果是:
A ( [1,2,3,4,5])
B [12, 34, 56, 78]
C ([12, 34, 56, 78])
D [1,2,3,4,5]
正確答案: B
26.以下關于數據維度的描述,錯誤的是:
A 采用列表表示一維數據,不同數據類型的元素是可以的
B JSON格式可以表示比二維數據還復雜的高維數據
C 二維數據可以看成是一維數據的組合形式
D 字典不可以表示二維以上的高維數據
正確答案: D
27.以下不屬于Python的pip工具命令的選項是:
A show
B install
C download
D get
正確答案: D
29.以下不是程序輸出結果的選項是:
A [12, 78, 56, 34]
B [56, 12, 78, 34]
C [12, 34, 56, 78]
D [12, 78, 34, 56]
正確答案: C
30.以下關于turtle庫的描述,正確的是:
A 在import turtle之后就可以用circle()語句,來畫一個圓圈
B 要用from turtle import turtle來導入所有的庫函數
C home() 函數設置當前畫筆位置到原點,朝向東
D seth(x) 是setheading(x)函數的別名,讓畫筆向前移動x
正確答案: C
31.一些重要的程序語言(如C語言和Pascal語言)允許過程的遞歸調用。而實現遞歸調用中的存儲分配通常用
A 棧
B 堆
C 鏈表
D 數組
正確答案: A
因為函數調用是能過將關鍵寄存器壓棧保護現場;在函數返回時,彈棧恢復現場來完成的。
而遞歸調用說白了就是自已調用自己。也就是不停的上演pop, push的棧操作。
系統為什么選用棧來實現函數間的調用呢?我覺的主要原因如下:
對于頻繁的調用操作過程中,棧的pop,push操作最簡潔,快速。硬件級(或者理解成匯編級也行)支持棧操作。所以用棧最高效,快速。如果用堆、數組、鏈表,不光要維護很多功能輔助性數據,算法也很麻煩。這樣會大大降低計算機的使用效率。
32.下列敘述中正確的是
A 一個算法的空間復雜度大,則其時間復雜度必定小
B 一個算法的空間復雜度大,則其時間復雜度也必定大
C 算法的時間復雜度與空間復雜度沒有直接關系
D 一個算法的時間復雜度大,則其空間復雜度必定小
正確答案: C
34.軟件開發離不開系統環境資源的支持,其中必要的測試數據屬于
A 輔助資源
B 硬件資源
C 通信資源
D 支持軟件
正確答案: A
35.完全不考慮程序的內部結構和內部特征,而只是根據程序功能導出測試用例的測試方法是
A 錯誤推測法
B 白箱測試法
C 黑箱測試法
D 安裝測試法
正確答案: C
37.下列有關數據庫的描述,正確的是
A 數據庫是一個關系
B 數據庫是一個DBF文件
C 數據庫是一個結構化的數據集合
D 數據庫是一組文件
正確答案: C
38.相對于數據庫系統,文件系統的主要缺陷有數據關聯差、數據不一致性和
A 可重用性差
B 冗余性
C 非持久性
D 安全性差
正確答案: B
39.軟件開發的結構化生命周期方法將軟件生命周期劃分成
A 定義、開發、運行維護
B 設計階段、編程階段、測試階段
C 總體設計、詳細設計、編程調試
D 需求分析、功能定義、系統設計
正確答案: A
40.下列不屬于結構化分析的常用工具的是
A 判定樹
B 數據字典
C 數據流圖
D PAD圖
正確答案: C
當前題目:python函數結構答案 數據結構與算法python語言描述答案
標題路徑:http://m.kartarina.com/article14/hhocge.html
成都網站建設公司_創新互聯,為您提供品牌網站建設、手機網站建設、靜態網站、標簽優化、搜索引擎優化、網站改版
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯