我課程中的部分代碼(除沒寫):
創(chuàng)新互聯(lián)是專業(yè)的渭濱網(wǎng)站建設(shè)公司,渭濱接單;提供網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行渭濱網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
def?f_add(a,b):
return?a+b
def?f_mul(a,b):
return?a*b
def?f_sub(a,b):
return?a-b
def?g1(f,a,b):
return?f(a,b)
a,b,c,d?=?1,2,3,4
print?g1(f_sub,?g1(f_mul,?g1(f_add,a,b),?c),?d),??g1(f_mul,?g1(f_add,a,b),?g1(f_sub,c,?d))
對python感興趣可以到這里了解一下:
study.163.com/course/courseMain.htm?courseId=1000035
#整個程序的意思是,求輸入整數(shù)到這個整數(shù)加上100的范圍內(nèi)的奇數(shù)和。
N?=?input("請輸入一個整數(shù):?")???????????????#從鍵盤接收一個字符串?dāng)?shù)字放到變量N
s?=?0
for?i?in?range(eval(N),?eval(N)+100):?????#eval函數(shù)用來計(jì)算字符串的值,這里其實(shí)跟int函數(shù)的作用一樣,用來將字符串?dāng)?shù)字轉(zhuǎn)化為整數(shù)
if?i%2?==?1:??????????????????????????#判斷范圍內(nèi)的當(dāng)前元素是否是奇數(shù),如果是則s加當(dāng)前數(shù)字的和再賦給自身
s?+=?i
print(s)
函數(shù)函數(shù)是代碼的一種組織形式
函數(shù)應(yīng)該能完成一項(xiàng)特定的工作,而且一般一個函數(shù)只完成一項(xiàng)工作
有些語言,分函數(shù)和過程兩個概念,通俗解釋是,有返回結(jié)果的是函數(shù),無返回結(jié)果的叫過程,python不加以區(qū)分
函數(shù)的使用函數(shù)使用需要先定義
使用函數(shù),俗稱調(diào)用# 定義一個函數(shù)
# 只是定義的話不會執(zhí)行
# 1. def關(guān)鍵字,后跟一個空格
# 2. 函數(shù)名,自己定義,起名需要遵循便令命名規(guī)則,約定俗成,大駝峰命名只給類用
# 3. 后面括號和冒號不能省,括號內(nèi)可以有參數(shù)
# 4. 函數(shù)內(nèi)所有代碼縮進(jìn)
def func():
print("我是一個函數(shù)")
print("愛生活")
print("函數(shù)結(jié)束了")函數(shù)結(jié)束了# 函數(shù)的調(diào)用
# 直接寫出函數(shù)名字,后面小括號不能省略,括號內(nèi)內(nèi)容根據(jù)情況
func()我是一個函數(shù)
愛生活# 函數(shù)定義
def func():
print('A')
print('B')func()A
B
函數(shù)的參數(shù)和返回值參數(shù):負(fù)責(zé)給函數(shù)傳遞一些必要的數(shù)據(jù)或者信息形參(形式參數(shù)):在函數(shù)定義的時候用到的參數(shù),沒有具體值,只是一個占位符號
實(shí)參(實(shí)際參數(shù)):在調(diào)用函數(shù)的時候輸入的值
返回值:調(diào)用函數(shù)的時候的一個執(zhí)行結(jié)果使用return返回結(jié)果
如果沒有值需要返回,我們推薦使用return None表示函數(shù)結(jié)束
函數(shù)一旦執(zhí)行return,則函數(shù)立即結(jié)束
如果函數(shù)沒有return關(guān)鍵字,則函數(shù)默認(rèn)返回None# 形參和實(shí)參的案例
# 參數(shù)person只是一個符號
# 調(diào)用的時候用另一個
def hello(person):
print("{},你好嗎?".format(person))
return None
p = "小明"
# 調(diào)用函數(shù),需要把p作為實(shí)參傳入
hello(p)小明,你好嗎?p = "小五"
hello(p)小五,你好嗎?pp = hello("小柒")
print(pp)小柒,你好嗎?
None# return案例
def hello(person):
print("{0},你好嗎?".format(person))
return "提前結(jié)束!"
print(1)
p = "小明"
rst = hello(p)
print(rst)小明,你好嗎?
提前結(jié)束!# help負(fù)責(zé)隨時為你提供幫助
help(None) # 等價于help(peint())Help on built-in function print in module builtins:
print(...)
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.# 九九乘法表
# version 1.0
for o in range(1, 10): # 控制外循環(huán) 從 1 到 9
for i in range(1, o + 1): # 內(nèi)循環(huán),每次從第一個數(shù)字開始,打印到跟行數(shù)相同的數(shù)量
print(o * i, end=" ")
print()1
2 4
3 6 9
4 8 12 16
5 10 15 20 25
6 12 18 24 30 36
7 14 21 28 35 42 49
8 16 24 32 40 48 56 64
9 18 27 36 45 54 63 72 81help(print)Help on built-in function print in module builtins:
print(...)
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.# 嘗試用函數(shù)來打印九九乘法表
def jiujiu():
for o in range(1, 10): # 控制外循環(huán) 從 1 到 9
for i in range(1, o + 1): # 內(nèi)循環(huán),每次從第一個數(shù)字開始,打印到跟行數(shù)相同的數(shù)量
print(o * i, end=" ")
print()
return None
jiujiu()
jiujiu()1
2 4
3 6 9
4 8 12 16
5 10 15 20 25
6 12 18 24 30 36
7 14 21 28 35 42 49
8 16 24 32 40 48 56 64
9 18 27 36 45 54 63 72 81
1
2 4
3 6 9
4 8 12 16
5 10 15 20 25
6 12 18 24 30 36
7 14 21 28 35 42 49
8 16 24 32 40 48 56 64
9 18 27 36 45 54 63 72 81# 改造上面函數(shù)
def printLine(line_num):
'''
line_num;代表行號
打印一行九九乘法表
'''
for i in range(1, line_num + 1):
print(line_num * i, end=" ")
print()
def jiujiu():
for o in range(1, 10): # 控制外循環(huán) 從 1 到 9
printLine(o)
return None
jiujiu()1
2 4
3 6 9
4 8 12 16
5 10 15 20 25
6 12 18 24 30 36
7 14 21 28 35 42 49
8 16 24 32 40 48 56 64
9 18 27 36 45 54 63 72 81
參數(shù)詳解python參考資料:headfirst python - 零基礎(chǔ)入門學(xué)習(xí)python(小甲魚)、流暢的python - 習(xí)題
參數(shù)分類普通參數(shù)/位置參數(shù)
默認(rèn)參數(shù)
關(guān)鍵字參數(shù)
收集參數(shù)
普通參數(shù)c參見上例
定義的時候直接定義變量名
調(diào)用的時候直接把變量或者值放入指定位置def 函數(shù)名(參數(shù)1,參數(shù)2,.....):
函數(shù)體
# 調(diào)用
函數(shù)名(value1,value2,......)
# 調(diào)用的時候,具體值參考的是位置,按位置賦值
默認(rèn)參數(shù)形參帶有默認(rèn)值
調(diào)用的時候,如果沒有對相應(yīng)形參賦值,則使用默認(rèn)值
python的內(nèi)置函數(shù)(68個)
Python考核31個內(nèi)置函數(shù),
python內(nèi)置了很多內(nèi)置函數(shù)、類方法屬性及各種模塊。當(dāng)我們想要當(dāng)我們想要了解某種類型有哪些屬性方法以及每種方法該怎么使用時,我們可以使用dir()函數(shù)和help()函數(shù)在python idle交互式模式下獲得我們想要的信息。
? dir()函數(shù)獲得對象中可用屬性的列表
Python中的關(guān)鍵詞有哪些?
dir(__builtins__):查看python內(nèi)置函數(shù)
help(‘keywords‘):查看python關(guān)鍵詞
如微分積分方程的求解程序、訪問互聯(lián)網(wǎng)、獲取日期和時間、機(jī)器學(xué)習(xí)算法等。這些程序往往被收入程序庫中,構(gòu)成程序庫。
只有經(jīng)過嚴(yán)格檢驗(yàn)的程序才能放在程序庫里。檢驗(yàn),就是對程序作充分的測試。通常進(jìn)行的有正確性測試、精度測試、速度測試、邊界條件和出錯狀態(tài)的測試。經(jīng)過檢驗(yàn)的程序不但能保證計(jì)算結(jié)果的正確性,而且對錯誤調(diào)用也能作出反應(yīng)。程序庫中的程序都是規(guī)范化的。所謂規(guī)范化有三重含義:①同一庫里所有程序的格式是統(tǒng)一的;② 對這些程序的調(diào)用方法是相同的;③ 每個程序所需參數(shù)的數(shù)目、順序和類型都是嚴(yán)格規(guī)定好的。
Python的庫包含標(biāo)準(zhǔn)庫和第三方庫
標(biāo)準(zhǔn)庫:程序語言自身擁有的庫,可以直接使用。help('modules')
第三方庫:第三方者使用該語言提供的程序庫。
標(biāo)準(zhǔn)庫: turtle 庫(必選)、 random 庫(必選)、 time 庫(可選)。
? turtle 庫:圖形繪制庫
原理如同控制一只海龜,以不同的方向和速度進(jìn)行位移而得到其運(yùn)動軌跡。
使用模塊的幫助時,需要先將模塊導(dǎo)入。
例如:在IDLE中輸入import turtle
dir(turtle)
help(turtle.**)
1.畫布
畫布就是turtle為我們展開用于繪圖區(qū)域, 我們可以設(shè)置它的大小和初始位置。
setup()方法用于初始化畫布窗口大小和位置,參數(shù)包括畫布窗口寬、畫布窗口高、窗口在屏幕的水平起始位置和窗口在屏幕的垂直起始位置。
參數(shù):width, height: 輸入寬和高為整數(shù)時,表示 像素 ;為小數(shù)時,表示占據(jù)電腦屏幕的比例。(startx,starty):這一坐標(biāo)表示
矩形窗口左上角頂點(diǎn)的位置,如果為空,則窗口位于屏幕中心:
例如:setup(640,480,300,300)表示在桌面屏幕(300,300)位置開始創(chuàng)建640×480大小的畫布窗體。
2、畫筆
? color() 用于設(shè)置或返回畫筆顏色和填充顏色。
例如:color(‘red’)將顏色設(shè)為紅色,也可用fillcolor()方法設(shè)置或返回填充顏色,或用pencolor()方法設(shè)置或返回筆觸顏色。
Python中有許多內(nèi)置函數(shù),不像print、len那么廣為人知,但它們的功能卻異常強(qiáng)大,用好了可以大大提高代碼效率,同時提升代碼的簡潔度,增強(qiáng)可閱讀性
Counter
collections在python官方文檔中的解釋是High-performance container datatypes,直接的中文翻譯解釋高性能容量數(shù)據(jù)類型。這個模塊實(shí)現(xiàn)了特定目標(biāo)的容器,以提供Python標(biāo)準(zhǔn)內(nèi)建容器 dict , list , set , 和 tuple 的替代選擇。在python3.10.1中它總共包含以下幾種數(shù)據(jù)類型:
容器名簡介
namedtuple() 創(chuàng)建命名元組子類的工廠函數(shù)
deque 類似列表(list)的容器,實(shí)現(xiàn)了在兩端快速添加(append)和彈出(pop)
ChainMap 類似字典(dict)的容器類,將多個映射集合到一個視圖里面
Counter 字典的子類,提供了可哈希對象的計(jì)數(shù)功能
OrderedDict 字典的子類,保存了他們被添加的順序
defaultdict 字典的子類,提供了一個工廠函數(shù),為字典查詢提供一個默認(rèn)值
UserDict 封裝了字典對象,簡化了字典子類化
UserList 封裝了列表對象,簡化了列表子類化
UserString 封裝了字符串對象,簡化了字符串子類化
其中Counter中文意思是計(jì)數(shù)器,也就是我們常用于統(tǒng)計(jì)的一種數(shù)據(jù)類型,在使用Counter之后可以讓我們的代碼更加簡單易讀。Counter類繼承dict類,所以它能使用dict類里面的方法
舉例
#統(tǒng)計(jì)詞頻
fruits = ['apple', 'peach', 'apple', 'lemon', 'peach', 'peach']
result = {}
for fruit in fruits:
if not result.get(fruit):
result[fruit] = 1
else:
result[fruit] += 1
print(result)
#{'apple': 2, 'peach': 3, 'lemon': 1}下面我們看用Counter怎么實(shí)現(xiàn):
from collections import Counter
fruits = ['apple', 'peach', 'apple', 'lemon', 'peach', 'peach']
c = Counter(fruits)
print(dict(c))
#{'apple': 2, 'peach': 3, 'lemon': 1}顯然代碼更加簡單了,也更容易閱讀和維護(hù)了。
elements()
返回一個迭代器,其中每個元素將重復(fù)出現(xiàn)計(jì)數(shù)值所指定次。元素會按首次出現(xiàn)的順序返回。如果一個元素的計(jì)數(shù)值小于1,elements()將會忽略它。
c = Counter(a=4, b=2, c=0, d=-2)
sorted(c.elements())
['a', 'a', 'a', 'a', 'b', 'b']most_common([n])
返回一個列表,其中包含n個最常見的元素及出現(xiàn)次數(shù),按常見程度由高到低排序。如果n被省略或?yàn)镹one,most_common()將返回計(jì)數(shù)器中的所有元素。計(jì)數(shù)值相等的元素按首次出現(xiàn)的順序排序:
Counter('abracadabra').most_common(3)
[('a', 5), ('b', 2), ('r', 2)]這兩個方法是Counter中最常用的方法,其他方法可以參考 python3.10.1官方文檔
實(shí)戰(zhàn)
Leetcode 1002.查找共用字符
給你一個字符串?dāng)?shù)組words,請你找出所有在words的每個字符串中都出現(xiàn)的共用字符(包括重復(fù)字符),并以數(shù)組形式返回。你可以按任意順序返回答案。
輸入:words = ["bella", "label", "roller"]
輸出:["e", "l", "l"]
輸入:words = ["cool", "lock", "cook"]
輸出:["c", "o"]看到統(tǒng)計(jì)字符,典型的可以用Counter完美解決。這道題是找出字符串列表里面每個元素都包含的字符,首先可以用Counter計(jì)算出每個元素每個字符出現(xiàn)的次數(shù),依次取交集最后得出所有元素共同存在的字符,然后利用elements輸出共用字符出現(xiàn)的次數(shù)
class Solution:
def commonChars(self, words: List[str]) - List[str]:
from collections import Counter
ans = Counter(words[0])
for i in words[1:]:
ans = Counter(i)
return list(ans.elements())提交一下,發(fā)現(xiàn)83個測試用例耗時48ms,速度還是不錯的
sorted
在處理數(shù)據(jù)過程中,我們經(jīng)常會用到排序操作,比如將列表、字典、元組里面的元素正/倒排序。這時候就需要用到sorted(),它可以對任何可迭代對象進(jìn)行排序,并返回列表
對列表升序操作:
a = sorted([2, 4, 3, 7, 1, 9])
print(a)
# 輸出:[1, 2, 3, 4, 7, 9]對元組倒序操作:
sorted((4,1,9,6),reverse=True)
print(a)
# 輸出:[9, 6, 4, 1]使用參數(shù):key,根據(jù)自定義規(guī)則,按字符串長度來排序:
fruits = ['apple', 'watermelon', 'pear', 'banana']
a = sorted(fruits, key = lambda x : len(x))
print(a)
# 輸出:['pear', 'apple', 'banana', 'watermelon']all
all() 函數(shù)用于判斷給定的可迭代參數(shù)iterable中的所有元素是否都為 TRUE,如果是返回 True,否則返回 False。元素除了是 0、空、None、False外都算True。注意:空元組、空列表返回值為True。
all(['a', 'b', 'c', 'd']) # 列表list,元素都不為空或0
True
all(['a', 'b', '', 'd']) # 列表list,存在一個為空的元素
False
all([0, 1,2, 3]) # 列表list,存在一個為0的元素
False
all(('a', 'b', 'c', 'd')) # 元組tuple,元素都不為空或0
True
all(('a', 'b', '', 'd')) # 元組tuple,存在一個為空的元素
False
all((0, 1, 2, 3)) # 元組tuple,存在一個為0的元素
False
all([]) # 空列表
True
all(()) # 空元組
Trueany函數(shù)正好和all函數(shù)相反:判斷一個tuple或者list是否全為空,0,F(xiàn)alse。如果全為空,0,F(xiàn)alse,則返回False;如果不全為空,則返回True。
F-strings
在python3.6.2版本中,PEP 498提出一種新型字符串格式化機(jī)制,被稱為 “字符串插值” 或者更常見的一種稱呼是F-strings,F(xiàn)-strings提供了一種明確且方便的方式將python表達(dá)式嵌入到字符串中來進(jìn)行格式化:
s1='Hello'
s2='World'
print(f'{s1} {s2}!')
# Hello World!在F-strings中我們也可以執(zhí)行函數(shù):
def power(x):
return x*x
x=4
print(f'{x} * {x} = {power(x)}')
# 4 * 4 = 16而且F-strings的運(yùn)行速度很快,比傳統(tǒng)的%-string和str.format()這兩種格式化方法都快得多,書寫起來也更加簡單。
本文主要講解了python幾種冷門但好用的函數(shù),更多內(nèi)容以后會陸陸續(xù)續(xù)更新~
def dist(x1,x2,y1,y2,):
return ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5
print dist(-1, -2, 1, 2)
當(dāng)前題目:前向計(jì)算函數(shù)python 前向算法和后向算法
分享地址:http://jinyejixie.com/article26/dosoocg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、面包屑導(dǎo)航、定制網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、搜索引擎優(yōu)化、微信公眾號
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)