<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                如果對自然語言分類,有很多中分法,比如英語、法語、漢語等,這種分法是最常見的。在語言學里面,也有對語言的分類方法,比如什么什么語系之類的。我這里提出一種分法,這種分法尚未得到廣大人民群眾和研究者的廣泛認同,但是,我相信那句“真理是掌握在少數人的手里”,至少在這里可以用來給自己壯壯膽。 我的分法:一種是語言中的兩個元素(比如兩個字)拼接在一起,出來一個新的元素(比如新的字);另外一種是兩個元素拼接在一起,只是得到這兩個元素的并列顯示。比如“好”和“人”,兩個元素拼接在一起是“好人”,而3和5拼接(就是整數求和)在一起是8,如果你認為是35,那就屬于第二類了。 把我的這種分法抽象一下: * 一種是:△ +□ = ○ * 另外一種是:△ +□ = △ □ 我們的語言中,離不開以上兩類,不是第一類就是第二類。 太天才了。請鼓掌。 ## [](https://github.com/qiwsir/StarterLearningPython/blob/master/106.md#字符串)字符串 在我洋洋自得的時候,我google了一下,才發現,自己沒那么高明,看[維基百科的字符串詞條](http://zh.wikipedia.org/wiki/%E5%AD%97%E7%AC%A6%E4%B8%B2)是這么說的: > 字符串(String),是由零個或多個字符組成的有限串行。一般記為s=a[1]a[2]...a[n]。 看到維基百科的偉大了吧,它已經把我所設想的一種情況取了一個形象的名稱,叫做字符串,本質上就是一串字符。 根據這個定義,在前面兩次讓一個程序員感到偉大的"Hello,World",就是一個字符串。或者說不管用英文還是中文還是別的某種文,寫出來的文字都可以做為字符串對待,當然,里面的特殊符號,也是可以做為字符串的,比如空格等。 嚴格地說,在python中的字符串是一種對象類型,這種類型用str表示,通常單引號`''`或者雙引號`""`包裹起來。 > 字符串和前面講過的數字一樣,都是對象的類型,或者說都是值。當然,表示方式還是有區別的。 ~~~ >>> "I love Python." 'I love Python.' >>> 'I LOVE PYTHON.' 'I LOVE PYTHON.' ~~~ 從這兩個例子中可以看出來,不論使用單引號還是雙引號,結果都是一樣的。 ~~~ >>> 250 250 >>> type(250) <type 'int'> >>> "250" '250' >>> type("250") <type 'str'> ~~~ 仔細觀察上面的區別,同樣是250,一個沒有放在引號里面,一個放在了引號里面,用`type()`函數來檢驗一下,發現它們居然是兩種不同的對象類型,前者是int類型,后者則是str類型,即字符串類型。所以,請大家務必注意,不是所有數字都是int(or float),必須要看看,它在什么地方,如果在引號里面,就是字符串了。如果搞不清楚是什么類型,就讓`type()`來幫忙搞定。 操練一下字符串吧。 ~~~ >>> print "good good study, day day up" good good study, day day up >>> print "----good---study---day----up" ----good---study---day----up ~~~ 在print后面,打印的都是字符串。注意,是雙引號里面的,引號不是字符串的組成部分。它是在告訴計算機,它里面包裹著的是一個字符串。 愛思考的看官肯定發現上面這句話有問題了。如果我要把下面這句話看做一個字符串,應該怎么做? ~~~ What's your name? ~~~ 這個問題非常好,因為在這句話中有一個單引號,如果直接在交互模式中像上面那樣輸入,就會這樣: ~~~ >>> 'What's your name?' File "<stdin>", line 1 'What's your name?' ^ SyntaxError: invalid syntax ~~~ 出現了`SyntaxError`(語法錯誤)引導的提示,這是在告訴我們這里存在錯誤,錯誤的類型就是`SyntaxError`,后面是對這種錯誤的解釋“invalid syntax”(無效的語法)。特別注意,錯誤提示的上面,有一個^符號,直接只著一個單引號,不用多說,你也能猜測出,大概在告訴我們,可能是這里出現錯誤了。 > 在python中,這一點是非常友好的,如果語句存在錯誤,就會將錯誤輸出來,供程序員改正參考。當然,錯誤來源有時候比較復雜,需要根據經驗和知識進行修改。還有一種修改錯誤的好辦法,就是講錯誤提示放到google中搜索。 上面那個值的錯誤原因是什么呢?仔細觀察,發現那句話中事實上有三個單引號,本來一對單引號之間包裹的是一個字符串,現在出現了三個(一對半)單引號,computer姑娘迷茫了,她不知道單引號包裹的到底是誰。于是報錯。 **解決方法一:**雙引號包裹單引號 ~~~ >>> "What's your name?" "What's your name?" ~~~ 用雙引號來包裹,雙引號里面允許出現單引號。其實,反過來,單引號里面也可以包裹雙引號。這個可以籠統地成為二者的嵌套。 **解決方法二:**使用轉義符 所謂轉義,就是讓某個符號不在表示某個含義,而是表示另外一個含義。轉義符的作用就是它能夠轉變符號的含義。在python中,用`\`作為轉義符(其實很多語言,只要有轉義符的,都是用這個符號)。 ~~~ >>> 'What\'s your name?' "What's your name?" ~~~ 是不是看到轉義符`\`的作用了。 本來單引號表示包括字符串,它不是字符串一部分,但是如果前面有轉義符,那么它就失去了原來的含義,轉化為字符串的一部分,相當于一個特殊字符了。 ## [](https://github.com/qiwsir/StarterLearningPython/blob/master/106.md#變量和字符串)變量和字符串 前面講過**變量無類型,對象有類型**了,比如在數字中: ~~~ >>> a = 5 >>> a 5 ~~~ 其本質含義是變量a相當于一個標簽,貼在了對象5上面。并且我們把這個語句叫做賦值語句。 同樣,在對字符串類型的對象,也是這樣,能夠通過賦值語句,將對象與某個標簽(變量)關聯起來。 ~~~ >>> b = "hello,world" >>> b 'hello,world' >>> print b hello,world ~~~ 還記得我們曾經用過一個type命令嗎?現在它還有用,就是檢驗一個變量,到底跟什么類型聯系著,是字符串還是數字? ~~~ >>> type(a) <type 'int'> >>> type(b) <type 'str'> ~~~ 有時候,你會聽到一種說法:把a稱之為數字型變量,把b叫做字符(串)型變量。這種說法,在某些語言中是成立的。某些語言,需要提前聲明變量,然后變量就成為了一個筐,將值裝到這個筐里面。但是,python不是這樣的。要注意區別。 ## [](https://github.com/qiwsir/StarterLearningPython/blob/master/106.md#拼接字符串)拼接字符串 還記得我在本節開篇提出的那個偉大發現嗎?就是將兩個東西拼接起來。 對數字,如果拼接,就是對兩個數字求和。如:3+5,就計算出為8。那么對字符串都能進行什么樣的操作呢?試試吧: ~~~ >>> "py" + "thon" 'python' ~~~ 跟我那個不為大多數人認可的發現是一樣的,你還不認可嗎?兩個字符串相加,就相當于把兩個字符串連接起來。(別的運算就別嘗試了,沒什么意義,肯定報錯,不信就試試) ~~~ >>> "py" - "thon" #這么做的人,是腦袋進水泥了吧? Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for -: 'str' and 'str' ~~~ 用`+`號實現連接,的確比較簡單,不過,有時候你會遇到這樣的問題: ~~~ >>> a = 1989 >>> b = "free" >>> print b+a Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: cannot concatenate 'str' and 'int' objects ~~~ > 這里引入了一個指令:`print`,意思就是打印后面的字符串(或者指向字符串的變量),上面是python2中的使用方式,在python3中,它變成了一個函數。應該用`print(b+a)`的樣式了。 報錯了,其錯誤原因已經打印出來了(一定要注意看打印出來的信息):`cannot concatenate 'str' and 'int' objects`。原來`a`對應的對象是一個`int`類型的,不能將它和`str`對象連接起來。怎么辦? 原來,用`+`拼接起來的兩個對象,必須是同一種類型的。如果兩個都是數字,毫無疑問是正確的,就是求和;如果都是字符串,那么就得到一個新的字符串。 修改上面的錯誤,可以通過以下方法: ~~~ >>> print b + `a` free1989 ~~~ 注意,` ` 是反引號,不是單引號,就是鍵盤中通常在數字1左邊的那個,在英文半角狀態下輸入的符號。這種方法,在編程實踐中比較少應用,特別是在python3中,已經把這種方式棄絕了。我想原因就是這個符號太容易和單引號混淆了。在編程中,也不容易看出來,可讀性太差。 常言道:“困難只有一個,解決困難的方法不止一種”,既然反引號可讀性不好,在編程實踐中就盡量不要使用。于是乎就有了下面的方法,這是被廣泛采用的。不但簡單,更主要是直白,一看就懂什么意思了。 ~~~ >>> print b + str(a) free1989 ~~~ 用`str(a)`實現將整數對象轉換為字符串對象。雖然str是一種對象類型,但是它也能夠實現對象類型的轉換,這就起到了一個函數的作用。其實前面已經講過的int也有類似的作用。比如: ~~~ >>> a = "250" >>> type(a) <type 'str'> >>> b = int(a) >>> b 250 >>> type(b) <type 'int'> ~~~ > 提醒列位,如果你對int和str比較好奇,可以在交互模式中,使用help(int),help(str)查閱相關的更多資料。 還有第三種: ~~~ >>> print b + repr(a) #repr(a)與上面的類似 free1989 ~~~ 這里repr()是一個函數,其實就是反引號的替代品,它能夠把結果字符串轉化為合法的python表達式。 可能看官看到這個,就要問它們三者之間的區別了。首先明確,repr()和``是一致的,就不用區別了。接下來需要區別的就是repr()和str,一個最簡單的區別,repr是函數,str是跟int一樣,一種對象類型。不過這么說是不能完全解惑的。幸虧有那么好的google讓我輩使用,你會找到不少人對這兩者進行區分的內容,我推薦這個: > 1. When should i use str() and when should i use repr() ? > > Almost always use str when creating output for end users. > > repr is mainly useful for debugging and exploring. For example, if you suspect a string has non printing characters in it, or a float has a small rounding error, repr will show you; str may not. > > repr can also be useful for for generating literals to paste into your source code. It can also be used for persistence (with ast.literal_eval or eval), but this is rarely a good idea--if you want editable persisted values, something like JSON or YAML is much better, and if you don't plan to edit them, use pickle. > > 2.In which cases i can use either of them ? > > Well, you can use them almost anywhere. You shouldn't generally use them except as described above. > > 3.What can str() do which repr() can't ? > > Give you output fit for end-user consumption--not always (e.g., str(['spam', 'eggs']) isn't likely to be anything you want to put in a GUI), but more often than repr. > > 4.What can repr() do which str() can't > > Give you output that's useful for debugging--again, not always (the default for instances of user-created classes is rarely helpful), but whenever possible. > > And sometimes give you output that's a valid Python literal or other expression--but you rarely want to rely on that except for interactive exploration. 以上英文內容來源:[http://stackoverflow.com/questions/19331404/str-vs-repr-functions-in-python-2-7-5](http://stackoverflow.com/questions/19331404/str-vs-repr-functions-in-python-2-7-5) ## [](https://github.com/qiwsir/StarterLearningPython/blob/master/106.md#python轉義字符)Python轉義字符 在字符串中,有時需要輸入一些特殊的符號,但是,某些符號不能直接輸出,就需要用轉義符。所謂轉義,就是不采用符號本來的含義,而采用另外一含義了。下面表格中列出常用的轉義符: | 轉義字符 | 描述 | | --- | --- | | \ | (在行尾時) 續行符 | | \ | 反斜杠符號 | | \' | 單引號 | | \" | 雙引號 | | \a | 響鈴 | | \b | 退格(Backspace) | | \e | 轉義 | | \000 | 空 | | \n | 換行 | | \v | 縱向制表符 | | \t | 橫向制表符 | | \r | 回車 | | \f | 換頁 | | \oyy | 八進制數,yy代表的字符,例如:\o12代表換行 | | \xyy | 十六進制數,yy代表的字符,例如:\x0a代表換行 | | \other | 其它的字符以普通格式輸出 | 以上所有轉義符,都可以通過交互模式下print來測試一下,感受實際上是什么樣子的。例如: ~~~ >>> print "hello.I am qiwsir.\ #這里換行,下一行接續 ... My website is 'http://qiwsir.github.io'." hello.I am qiwsir.My website is 'http://qiwsir.github.io'. >>> print "you can connect me by qq\\weibo\\gmail" #\\是為了要后面那個\ you can connect me by qq\weibo\gmail ~~~ 看官自己試試吧。如果有問題,可以聯系我解答。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看