COMP9021 Principles of Programming WEEK6 Optional

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')
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,695評(píng)論 19 139
  • 念往昔風(fēng)華正茂, 看今朝兩鬢斑斑, 嘆三十年時(shí)光之悠悠, 各自奔波為糊口, 今日再聚首, 執(zhí)手相看淚眼, 竟晃如隔...
    緣wxh閱讀 603評(píng)論 2 10
  • 又是一年考研時(shí)。先交代一下,目前我已經(jīng)在國(guó)內(nèi)某高校讀研,研二,考研總分402分。 最近很多學(xué)...
    愛(ài)瘋愛(ài)笑女神經(jīng)閱讀 1,305評(píng)論 12 56
  • 做計(jì)劃時(shí),很容易就鉆進(jìn)實(shí)際執(zhí)行細(xì)節(jié)上去了,腦子不清楚 成年人的世界只有底線z善事;沒(méi)有錢,就做點(diǎn)家務(wù)事;動(dòng)得了,就...
    新家中男孩閱讀 238評(píng)論 0 0

友情鏈接更多精彩內(nèi)容