python單行if
A. python if語句裡面怎麼繼續寫if語句
f的基本語法格來式看下面:第一行自是條件語句,如果滿足條件就會執行第二行,沒有括弧或者結束語句,比如endif,沒有。
假如第二行沒有縮進,就會產生錯誤。
新手容易犯一個錯誤就是條件語句後面不寫冒號,出現這樣的錯誤:
我們假如有多個條件,我們可以使用else,當條件不滿足的時候執行它下面的語句塊。當然else是頂個寫,並且後面記得寫冒號。
如果還有更多的條件,我們可以使用elif,同樣不要忘記冒號和縮進
B. python if語句
之前學習正則時候寫過類似的東西,找來給你參考下。 你語句的if 部分沒錯,很專明顯報錯在group(1) 上,你傳入的屬page參數和你給定的正則應該不匹配。
正則的group分組相關的,很是繞,我是沒完全搞明白,具體參考:網頁鏈接
C. 怎樣讓python語句單行單行的出現
outputChords = "" outputLyrics = "" inBracket = False for i in range(len(line)): if line[i] == '[': inBracket = True outputChords = outputChords + " " * (max(0, len(outputLyrics.encode('gbk')) - len(outputChords.encode('gbk')))...
D. Python中的if條件運算符能簡寫嗎
從前python 版本不可以,python 2.5以後版本可以。如:
valum=b if a>10 else c
E. python if 多條件判斷怎麼快
將簡單的條件寫來在前源面羅。
if i>3 and sqrt(i)==int(sqrt(i)):
if 的表達式如果可以拆分為多個以and/or子表達式,會按順序進行計算,and連接的情況下,得到一個False即不計算後面的表達式了,or連接的情況下,得到一個True就不計算後面的了。所以這可以提高一點速度。
在不能確定各個子表達式的計算時間時,按上面說的,將命中率高的寫在前面,比如一個if需要判斷條件a and b,其中a有80%可能是True,b有60%為True,那麼,寫成if b and a會快一點。
一般來說,這些對整體的執行速度影響不大,更多的還是在演算法,流程,結構方面的優化提升更大。
F. python問題,關於if的
比如對條件A,B,C,如果想在三個條件都滿足的情況下才返版回true的話。權
ifAandBandC:
returnTrue
returnFalse
或者
ifnotA:
returnFalse
ifnotB:
returnFalse
ifnotB:
returnFalse
returnTrue
G. python如何處理單行實現三元表達式
首先讓我們構成一個正則表達式。為簡單起見,先構成一個正則表達式來識別下面格式的電話號碼數字:(nnn)nnn-nnnn。
第一步,創建一個pattern對象來匹配上面的子字元串。一旦程序運行後,如果需要的話,可以讓這個對象一般化。匹配上面格式的正則表達可以這樣構成:(\d{3})\s\d{3}-\d{4},其中\d單字元類型用來匹配從0到9的任何數字,另外{3}重復符號,是個簡便的記號,用來表示有3個連續的數字位,也等效於(\d\d\d)。\s也另外一個比較有用的單字元類型,用來匹配空格,比如Space鍵,tab鍵和換行符。
是不是很簡單?但是,如果把這個正則表達式的模式用在java程序中,還要做兩件事。對java的解釋器來說,在反斜線字元(\)前的字元有特殊的含義。在java中,與regex有關的包,並不都能理解和識別反斜線字元(\),盡管可以試試看。但為避免這一點,即為了讓反斜線字元(\)在模式對象中被完全地傳遞,應該用雙反斜線字元(\)。此外圓括弧在正則表達中兩層含義,如果想讓它解釋為字面上意思(即圓括弧),也需要在它前面用雙反斜線字元(\)。也就是像下面的一樣:
\\(\\d{3}\\)\\s\\d{3}-\\d{4}
現在介紹怎樣在java代碼中實現剛才所講的正則表達式。要記住的事,在用正則表達式的包時,在你所定義的類前需要包含該包,也就是這樣的一行:
import java.util.regex.*;
下面的一段代碼實現的功能是,從一個文本文件逐行讀入,並逐行搜索電話號碼數字,一旦找到所匹配的,然後輸出在控制台。
BufferedReader in;
Pattern pattern = Pattern.compile("\\(\\d{3}\\)\\s\\d{3}-\\d{4}");
in = new BufferedReader(new FileReader("phone"));
String s;
while ((s = in.readLine()) != null)
{
Matcher matcher = pattern.matcher(s);
if (matcher.find())
{
System.out.println(matcher.group());
}
}
in.close();
對那些熟悉用Python或Javascript來實現正則表達式的人來說,這段代碼很平常。在Python和Javascript這些語言中,或者其他的語言,這些正則表達式一旦明確地編譯過後,你想用到哪裡都可以。與Perl的單步匹配相比,看起來多多做了些工作,但這並不很費事。
find()方法,就像你所想像的,用來搜索與正則表達式相匹配的任何目標字元串,group()方法,用來返回包含了所匹配文本的字元串。應注意的是,上面的代碼,僅用在每行只能含有一個匹配的電話號碼數字字元串時。可以肯定的說,java的正則表達式包能用在一行含有多個匹配目標時的搜索。本文的原意在於舉一些簡單的例子來激起讀者進一步去學習java自帶的正則表達式包,所以對此就沒有進行深入的探討。
這相當漂亮吧! 但是很遺憾的是,這僅是個電話號碼匹配器。很明顯,還有兩點可以改進。如果在電話號碼的開頭,即區位號和本地號碼之間可能會有空格。我們也可匹配這些情況,則通過在正則表達式中加入\s?來實現,其中?元字元表示在模式可能有0或1個空格符。
第二點是,在本地號碼位的前三位和後四位數字間有可能是空格符,而不是連字型大小,更有勝者,或根本就沒有分隔符,就是7位數字連在一起。對這幾種情況,我們可以用(-|)?來解決。這個結構的正則表達式就是轉換器,它能匹配上面所說的幾種情況。在()能含有管道符|時,它能匹配是否含有空格符或連字元,而尾部的?元字元表示是否根本沒有分隔符的情況。
最後,區位號也可能沒有包含在圓括弧內,對此可以簡單地在圓括弧後附上?元字元,但這不是一個很好的解決方法。因為它也包含了不配對的圓括弧,比如"(555" 或 "555)"。相反,我們可以通過另一種轉換器來強迫讓電話號碼是否帶有有圓括弧:(\(\d{3}\)|\d{3})。如果我們把上面代碼中的正則表達式用這些改進後的來替換的話,上面的代碼就成了一個非常有用的電話號碼數字匹配器:
Pattern pattern =
Pattern.compile("(\\(\\d{3}\\)|\\d{3})\\s?\\d{3}(-|)?\\d{4}");
可以確定的是,你可以自己試著進一步改進上面的代碼。
現在看看第二個例子,它是從Friedl的中改編過來的。其功能是用來檢查文本文件中是否有重復的單詞,這在印刷排版中會經常遇到,同樣也是個語法檢查器的問題。
匹配單詞,像其他的一樣,也可以通過好幾種的正則表達式來完成。可能最直接的是\b\w+\b,其優點在於只需用少量的regex元字元。其中\w元字元用來匹配從字母a到u的任何字元。+元字元表示匹配匹配一次或多次字元,\b元字元是用來說明匹配單詞的邊界,它可以是空格或任何一種不同的標點符號(包括逗號,句號等)。
現在,我們怎樣來檢查一個給定的單詞是否被重復了三次?為完成這個任務,需充分利用正則表達式中的所熟知的向後掃描。如前面提到的,圓括弧在正則表達式中有幾種不同的用法,一個就是能提供組合類型,組合類型用來保存所匹配的結果或部分匹配的結果(以便後面能用到),即使遇到有相同的模式。在同樣的正則表達中,可能(也通常期望)不止有一個組合類型。在第n個組合類型中匹配結果可以通過向後掃描來獲取到。向後掃描使得搜索重復的單詞非常簡單:\b(\w+)\s+\1\b。
圓括弧形成了一個組合類型,在這個正則表示中它是第一組合類型(也是僅有的一個)。向後掃描\1,指的是任何被\w+所匹配的單詞。我們的正則表達式因此能匹配這樣的單詞,它有一個或多個空格符,後面還跟有一個與此相同的單詞。注意的是,尾部的定位類型(\b)必不可少,它可以防止發生錯誤。如果我們想匹配"Paris in the the spring",而不是匹配"Java's regex package is the theme of this article"。根據java現在的格式,則上面的正則表達式就是:Pattern pattern =Pattern.compile("\\b(\\w+)\\s+\\1\\b");
最後進一步的修改是讓我們的匹配器對大小寫敏感。比如,下面的情況:"The the theme of this article is the Java's regex package.",這一點在regex中能非常簡單地實現,即通過使用在Pattern類中預定義的靜態標志CASE_INSENSITIVE :
Pattern pattern =Pattern.compile("\\b(\\w+)\\s+\\1\\b",
Pattern.CASE_INSENSITIVE);
有關正則表達式的話題是非常豐富,而且復雜的,用Java來實現也非常廣泛,則需要對regex包進行的徹底研究,我們在這里所講的只是冰山一角。即使你對正則表達式比較陌生,使用regex包後會很快發現它強大功能和可伸縮性。如果你是個來自Perl或其他語言王國的老練的正則表達式的黑客,使用過regex包後,你將會安心地投入到java的世界,而放棄其他的工具,並把java的regex包看成是手邊必備的利器。
參考資料:http://new.cnitn.cn/gb/news/bbs/dispbbs.asp?boardid=20&id=5487&page=1
H. 電腦用python編程時按哪個鍵可以直接跳到下一行,比如寫完if語句後要寫下一行(我只會狂敲空格&
回車鍵,前提是 你的if 要寫完整寫完冒號,直接回車
I. python if語句後面有兩行,為什麼其中有一行無論真假都會執行
q和Q是兩個list,直接用Q=q的話,這兩個list會指定到同一內存地址,所以會同時變化版。要復制出不同內存權的地址的list,可以用Q=q[:],更詳細的可以去搜『淺拷貝』,『深拷貝』關鍵詞進行深入了解