python基礎(chǔ)學(xué)習(xí)筆記(二)
2013-02-24 16:25 ?蟲師 閱讀( ... ) 評論( ... ) 編輯 收藏繼續(xù)第一篇的內(nèi)容,講解, python 的一些基本的東西。
?
注釋
?
為了讓別人能夠更容易理解程序,使用注釋是非常有效的,即使是自己回頭再看舊代碼也是一樣。
>>>
#
獲得用戶名:
>>> user_name = raw_input(
"
what is your name?
"
)
在 python? 中用井號( # )表示注釋。井號( # )右邊的內(nèi)存將不被程序執(zhí)行。即使沒有注釋,也應(yīng)該讓代碼本身易于理解。幸好! Python 是一門出色的語言,它能幫助程序員編寫易于理解的程序。 ^_^
?
?
字符串
?
?
單引號字符串和轉(zhuǎn)義引號
>>>
"
hello,world
"
'
hello,world
'
>>>
'
"hello ,world" she said
'
'
"hello ,world" she said
'
>>>
"
'hello,world' she said
"
"
'hello,world' she said
"
?
第一個輸出,明明是雙引號(?“”?)?,怎么輸入變成了單引號(?‘’?)。這有什么區(qū)別呢?事實上,沒有區(qū)別。
再看第二個,單引導(dǎo)(‘’)里面包含了一對雙引號(“”),這次完整輸出了。難道只有雙引號輸出會變成單引號么?
再看第三個,雙引號(“”)號里面包含了一對單引號(‘’),這次為什么沒把最外面的雙引號變成單引號輸出??這編譯器比較情緒化,呵呵!
?
>>>
"
Let's go
"
"
Let's go
"
>>>
'
Let
'
s go
'
SyntaxError: invalid syntax
>>>
'
Let\'s go
'
"
Let's go
"
第一個輸出,雙引號包含一個單引號(實際上應(yīng)該叫撇 ( ‘)? ,因為它不是成對出現(xiàn)的。)可以正常輸出。
第二個輸出,一對單引號里面包含了一個單引號(這應(yīng)該是輸入者的本意)。編譯器不知道怎么識別了。
第三個輸出,為了達到這個目的,我們需要把中間的單引號用斜杠( \ )進行轉(zhuǎn)義。這次又不一樣了,單引號輸出之后變成了雙引號。編譯器,你真調(diào)皮。
?
拼接字符串
下面試試加號( + )來拼接一個字符
>>>
"
helle,
"
+
"
world!
"
'
helle,world!
'
>>> x=
"
hello,
"
>>> y=
"
world!
"
>>> x+
y
'
hello,world!
'
?
?
字符串表示, str? 和? repr
前面的例子讀者可能注意到,所有通過 python 打印的字符串還是被引號括起來的。這是因為 python 打印值的時候會保持該值在 python 代碼中的狀態(tài),而不是你希望?用戶所看到的狀態(tài)。如果用 print 語句,結(jié)果就不一樣了:
>>>
"
hello,world!
"
'
hello,world!
'
>>> 10000L
10000L
>>>
print
"
hello,world!
"
hello,world!
>>>
print
10000L
10000
可以看到,長整型數(shù) 10000L 被轉(zhuǎn)換成了數(shù)字 10000? ,而且在顯示給用戶的時候也如此。
我們在這里討論的實際上是值被轉(zhuǎn)為字符的兩種機制。可以通過以下兩個函數(shù)來使用這兩種機制:
>>>
print
str(
"
hello,world!
"
)
hello,world!
>>>
print
str(10000L
)
10000
>>>
print
repr(
"
hello,world!
"
)
'
hello,world!
'
>>>
print
repr(10000L
)
10000L
str() 函數(shù)?,它會把值轉(zhuǎn)換為合理形式的字符串,以例用戶可以理解;
repr() 函數(shù),它會創(chuàng)建一個字符串,它以合法的 python 表達式的形式來表示值。
?
?
input? 和? raw_input? 的比較
上一章的最后一個例子用到了 raw_input? 函數(shù),那它與? input? 有什么不用??下面我們用 input 函數(shù),再試試那個例子。
>>> name = input(
"
what is your name?
"
)
what
is
your name?huhu
Traceback (most recent call last):
File
"
"
, line 1,
in
name
= input(
"
what is your name?
"
)
File
"
"
, line 1,
in
NameError: name
'
huhu
'
is
not
defined
>>> name = input(
"
what is name?
"
)
what
is
name?
"
huhu
"
>>>
print
"
hello,
"
+ name +
"
!
"
hello, huhu !
input() 函數(shù)會假設(shè)用戶輸入的是合法的 python 表達式。所以直接輸入 huhu? 系統(tǒng)會提示錯誤,但是如果加上引號(“ huhu ”)就會是一個合法的字符,程序運行是沒有問題的。
然而,要求用戶帶著引號輸入他們的名字有點過份,因此,就這需要使用 raw_input 函數(shù)。
>>> input(
"
enter a namber:
"
)
enter a namber:
3
3
>>> raw_input(
"
enter a namber:
"
)
enter a namber:
3
'
3
'
當然 input 有特別的需要,比如要求用戶輸入數(shù)字時。
?
?
長字符串 ?
如果需要寫一個非常非常長的字符串,它需要跨多行,那么,可以使用三個引號帶點普通引號。
>>>
print
'''
this is a very long string.
It continues here.
and it's not over yet.
'''
this
is
a very long string.
It continues here.
and
it
'
s not over yet.
普通字符串也可以跨行。如果一行之中最后一個字符是反斜線,那么,換行符本身就“轉(zhuǎn)義”了,也就是被忽略了。
>>>
print
"
Hello.\
world!
"
Hello.world!
>>> 1+2+
\
4+5
12
?
?
?
原始字符串
>>> path =
'
C:\abc
'
>>>
print
path
C:bc
怎么會這樣呢,我想輸入的是一個路徑,卻被換行了。
>>>
print
'
C:\\abc
'
C:\abc
>>>
print
'
C:\\Program Files\\fnord\\foo\\bar\\baz\\frozz
'
C:\Program Files\fnord\foo\bar\baz\frozz
通過上面的雙斜線( \\ )解決了路徑問題,但如果路徑很長的話會不會太麻煩了。
>>>
print
r
'
C:\Program Files\fnord\foo\bar\baz\frozz
'
C:\Program Files\fnord\foo\bar\baz\frozz
>>>
print
r
'
Let\'s go !
'
Let\
'
s go !
原始字符串不會把反斜線當作特殊字符。可以看到,原始字符串以 r 開頭。
?
?
Unicode 字符串
字符串常量的最后一種類型就是 Unicode? 字符串(或者稱為 Unicode? 對象 --- 與字符串并不是同一個類型)。 Python 中的普通字符串在內(nèi)部是以 8 位 ASCII 碼形成存儲的,而 Unicode 字符串則存儲為 16 位 Unicode 字符,這樣就能夠表示更多的字符集了,包括世界上大多數(shù)語言的特殊字符。?
如果你不短簡什么是 Unicode? ,可以訪問 Unicode 網(wǎng)站: http://www.unicode.org
>>> u
'
hello, world!
'
u
'
hello, world!
'
可以看到, Unicode 字符串使用 u 前綴,就像原始字符串使用 r? 一樣。
注意:在 python?3.0 中,所有字符串都是 Unicode 字符串。
?
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

