1. About exam
exam建議先通讀題目,找到適合自己的做題排序,優(yōu)先做自己容易解決的。
考試環(huán)境是IDE,需要做的事情是:打開(kāi)考試文件,coding,submit,會(huì)有寫(xiě)好的doctest,如果運(yùn)行沒(méi)有結(jié)果出現(xiàn),千萬(wàn)別忘記這說(shuō)明你做對(duì)了。
2. Nash equilibrium
Lecture5的尾巴,在博弈中的非合作模式達(dá)到的平衡。
"The Nash equilibrium is a solution concept of a non-cooperative game involving two or more players in which each player is assumed to know the equilibrium strategies of the other players, and no player has anything to gain by changing only his own strategy."
這個(gè)部分沒(méi)有演示coding,詳細(xì)內(nèi)容在PDF文檔中。
3.Regular expression
re module引入用來(lái)查驗(yàn)regular expression:
import re
X = re.search('ab', 'abcabc')
print(X)
>>>
<_sre.SRE_Match object; span=(0, 2), match='ab'>
# span=(0, 2)代表位置0-2找到匹配對(duì)象,match='ab'代表找到的匹配對(duì)象
常用元字符:
. 匹配除換行符以外的任意字符
\w 匹配字母或數(shù)字或下劃線或漢字
\s 匹配任意的空白符
\d 匹配數(shù)字
\b 匹配單詞的開(kāi)始或結(jié)束
^ 匹配字符串的開(kāi)始
$ 匹配字符串的結(jié)束
常用限定符:
* 重復(fù)零次或更多次
+ 重復(fù)一次或更多次
? 重復(fù)零次或一次
{n} 重復(fù)n次
{n,} 重復(fù)n次或更多次
{n,m} 重復(fù)n到m次
X = re.search('\w', '%123abcabc')
print(X)
>>>
<_sre.SRE_Match object; span=(1, 2), match='1'>
#\w尋找的是字母/數(shù)字/下劃線/漢字,起始位置是%,不match,然后是1,match,返回找到的結(jié)果
X = re.search('\w*', '%asd%%dfg')
print(X)
>>>
<_sre.SRE_Match object; span=(0, 0), match=''>
#‘*’重復(fù)任意次數(shù),所以'\w*'允許空(重復(fù)0次),起始位置是%,不是\w,所以返回空
X = re.search('\w*', 'asd%%dfg')
print(X)
>>>
<_sre.SRE_Match object; span=(0, 3), match='asd'>
#與上面代碼相比差,去掉了起始位置的%,這樣尋找任意長(zhǎng)度的字母,返回的是asd
X = re.search('\w+', '%asd%%dfg')
print(X)
>>>
<_sre.SRE_Match object; span=(1, 4), match='asd'>
#+表示至少出現(xiàn)一次,所以找到asd
X = re.search('0|[1-9]\d*', '04')
print(X)
>>>
<_sre.SRE_Match object; span=(0, 1), match='0'>
#|表示邏輯OR,'0|[1-9]\d*'表示數(shù)字0或者是非0的任意長(zhǎng)度數(shù)字。所以返回第一位找到的數(shù)字0
X = re.search('^0|[1-9]\d*$', '04')
print(X)
>>>
<_sre.SRE_Match object; span=(0, 1), match='0'>
#'^0|[1-9]\d*$'表示以0或任意非0數(shù)字開(kāi)頭結(jié)尾的情況,所以返回第一位找到的數(shù)字0
X = re.search('(^0|[1-9]\d*)$', '04')
print(X)
>>>
<_sre.SRE_Match object; span=(1, 2), match='4'>
#()代表匹配,加入了括號(hào)后,含義改變,'(^0|[1-9]\d*)$'代表的是以0或者非0數(shù)字結(jié)尾的情況,所以返回結(jié)尾前面的數(shù)字4
4. Regular Expression Exercise
寫(xiě)出符合' ( +- 200 , +- 343 ) '形式的正則:
import re
X = re.search('^\s*\(\s*[+-]?([1-9]\d*)\s*,\s*[+-]?([1-9]\d*)\s*\)\s*$', ' ( 123, 45 )')
print(X)
>>>
<_sre.SRE_Match object; span=(0, 13), match=' ( 123, 45 )'>
#[+-]?代表選擇其中之一或沒(méi)有符號(hào),因?yàn)?含義是0個(gè)或1個(gè)
X.group()
>>>
('123', '45')
#顯示找到的結(jié)果分類
#如果想要顯示正負(fù)號(hào),則需要用()capture,可是這樣會(huì)產(chǎn)生多個(gè)括號(hào),每一個(gè)括號(hào)都是一個(gè)capture對(duì)象,所以結(jié)果是4個(gè)
X = re.search('^\s*\(\s*([+-]?([1-9]\d*))\s*,\s*([+-]?([1-9]\d*))\s*\)\s*$', ' ( +123, -45 )')
X.groups()
>>>
('+123', '123', '-45', '45')
#如果想要不去capture某個(gè)括號(hào)內(nèi)內(nèi)容,使用(?: XXX)的方法
X = re.search('^\s*\(\s*([+-]?(?:[1-9]\d*))\s*,\s*([+-]?(?:[1-9]\d*))\s*\)\s*$', ' ( +123, -45 )')
X.groups()
>>>
('+123', '-45')
另一個(gè)練習(xí)關(guān)于(?: )
X = re.search('(a(bc))((d(ef))g)', 'abcdefg')
X.groups()
>>>
('abc', 'bc', 'defg', 'def', 'ef')
X = re.search('(a(bc))((?:d(ef))g)', 'abcdefg')
X.groups()
>>>
('abc', 'bc', 'defg', 'ef')