成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

[零基礎(chǔ)學(xué)python]print能干的事情

kk_miles / 2515人閱讀

摘要:在干事情之前,先看看這個(gè)東東。行文到此,提醒列位,如果用的,請(qǐng)用,要加個(gè)括號(hào)。這樣的輸出算是對(duì)前面輸出的擴(kuò)展了。據(jù)說(shuō),會(huì)逐漸逐漸取代前面的。恭請(qǐng)列為到我的上及時(shí)更新的內(nèi)容零基礎(chǔ)學(xué)

print的一些基本用法,在前面的講述中也涉及一些,本講是在復(fù)習(xí)的基礎(chǔ)上,盡量再多點(diǎn)內(nèi)容。

eval()

在print干事情之前,先看看這個(gè)東東。不是沒(méi)有用,因?yàn)檎f(shuō)不定某些時(shí)候要用到。

>>> help(eval)      #這個(gè)是一招鮮,凡是不理解怎么用,就用這個(gè)看文檔

Help on built-in function eval in module __builtin__:

eval(...)
    eval(source[, globals[, locals]]) -> value

    Evaluate the source in the context of globals and locals.
    The source may be a string representing a Python expression
    or a code object as returned by compile().
    The globals must be a dictionary and locals can be any mapping,
    defaulting to the current globals and locals.
    If only globals is given, locals defaults to it.

能看懂更好了,看不懂也沒(méi)有關(guān)系??次覍懙陌?。哈哈。概括一下,eval()是把字符串中符合python表達(dá)式的東西計(jì)算出來(lái)。意思就是:

>>> 3+4         #這是一個(gè)表達(dá)式,python會(huì)根據(jù)計(jì)算法則計(jì)算出結(jié)果來(lái)
7
>>> "3+4"       #這是一個(gè)字符串,python就不計(jì)算里面的內(nèi)容了,雖然里面是一個(gè)符合python規(guī)范的表達(dá)式
"3+4"
>>> eval("3+4") #這里就跟上面不一樣了,就把字符串里面的表達(dá)式計(jì)算出來(lái)了
7

下面再看一個(gè)字符串“相加”的例子:

>>> "qiwsir"+".github.io"
"qiwsir.github.io"
>>> ""qiwsir"+".github.io""    #字符串里面,python是不會(huì)進(jìn)行“計(jì)算”的
""qiwsir"+".github.io""
>>> eval(""qiwsir"+".github.io"") #eval()做的事情完全不一樣,它會(huì)把字符串里面的計(jì)算出來(lái)
"qiwsir.github.io"

順便再說(shuō)一下另外一個(gè)跟eval()有點(diǎn)類似的函數(shù):exec(),這個(gè)函數(shù)專門來(lái)執(zhí)行字符串或文件里面的python語(yǔ)句。

>>> exec "print "hello, qiwsir""
hello, qiwsir
>>> "print "hello, qiwsir""
"print "hello, qiwsir""
print詳解

print命令在編程實(shí)踐中用的比較多,特別是要向看看程序運(yùn)行到某個(gè)時(shí)候產(chǎn)生了什么結(jié)果了,必須用print來(lái)輸出,或者說(shuō),本講更寬泛地說(shuō),就要說(shuō)明白把程序中得到的結(jié)果輸出問(wèn)題。

比較簡(jiǎn)單的輸出,前面已經(jīng)涉及到過(guò)了:

>>> name = "qiwsir"
>>> room = 703
>>> website = "qiwsir.github.io"
>>> print "MY name is:%s
My room is:%d
My website is:%s"%(name,room,website)
MY name is:qiwsir
My room is:703
My website is:qiwsir.github.io

其中,%s,%d就是占位符。

>>> a = 3.1415926
>>> print "%d"%a    #%d只能輸出整數(shù),int類型
3
>>> print "%f"%a  #%f輸出浮點(diǎn)數(shù)
3.141593
>>> print "%.2f"%a #按照要求輸出小數(shù)位數(shù)
3.14
>>> print "%.9f"%a  #如果要求的小數(shù)位數(shù)過(guò)多,后面就用0補(bǔ)全
3.141592600
>>> b = 3          
>>> print "%4d"%b   #如果是整數(shù),這樣寫要求該整數(shù)占有四個(gè)位置,于是在前面增加三個(gè)空格
   3                #而不是寫成0003的樣式

換一種范式,寫成這樣,就跟上面有點(diǎn)區(qū)別了。

>>> import math     #引入數(shù)學(xué)模塊
>>> print "PI=%f"%math.pi #默認(rèn),將圓周率打印成這個(gè)樣子
PI=3.141593
>>> print "PI=%10.3f"%math.pi #約束一下,這個(gè)的含義是整數(shù)部分加上小數(shù)點(diǎn)和小數(shù)部分共計(jì)10位,并且右對(duì)齊
PI=     3.142
>>> print "PI=%-10.3f"%math.pi #要求顯示的左對(duì)齊,其余跟上面一樣
PI=3.142
>>> print "PI=%06d"%int(math.pi) #整數(shù)部分的顯示,要求共6位,這樣前面用0補(bǔ)足了。
PI=000003

其實(shí),跟對(duì)上面數(shù)字操作類似,對(duì)字符串也可以做一些約束輸出操作??聪旅鎸?shí)驗(yàn),最好看官也試試。

>>> website
"qiwsir.github.io"
>>> print "%.3s"%website
qiw
>>> print "%.*s"%(3,website)
qiw
>>> print "%7.3s"%website
    qiw
>>> print "%-7.3s"%website
qiw    

總體上,跟對(duì)數(shù)字的輸出操作類似。不過(guò),在實(shí)際的操作中,這些用的真的不是很多,至少在我這么多年的代碼生涯中,用到上面復(fù)雜操作的,就是現(xiàn)在給列位展示的時(shí)候,充其量用一用對(duì)float類型的數(shù)據(jù)輸出小數(shù)位數(shù)的操作,其它的輸出操作,以默認(rèn)的那種方式居多。請(qǐng)看官在這里鄙夷我的無(wú)知吧。

行文到此,提醒列位,如果用python3的,請(qǐng)用print(),要加個(gè)括號(hào)。

print有一個(gè)特點(diǎn),就是輸出的時(shí)候,每行后面都自動(dòng)加上一個(gè)換行符號(hào) ,這個(gè)在前面已經(jīng)有所提及。

>>>  website
"qiwsir.github.io"
>>> for word in website.split("."):
...     print word
... 
qiwsir
github
io
>>> for word in website.split("."):
...     print word,         #注意,加了一個(gè)逗號(hào),輸出形式就變化了吧。
... 
qiwsir github io
%r是萬(wàn)能的嗎?

我曾經(jīng)說(shuō)過(guò),懶人改變世界,特別是在敲代碼的領(lǐng)域。于是就有人問(wèn)了,前面一會(huì)兒是%s,一會(huì)兒是%d,麻煩,有沒(méi)有一個(gè)萬(wàn)能的?于是網(wǎng)上就有人給出答案了,%r就是萬(wàn)能的??磳?shí)驗(yàn):

>>> import math
>>> print "PI=%r"%math.pi
PI=3.141592653589793
>>> print "Pi=%r"%int(math.pi)
Pi=3

真的是萬(wàn)能呀!別著急,看看這個(gè),你是不是就糊涂了?

>>> print "Pi=%s"%int(math.pi)
Pi=3

當(dāng)然,這樣就肯定出錯(cuò)了:

>>> print "p=%d"%"pi"
Traceback (most recent call last):
  File "", line 1, in 
TypeError: %d format: a number is required, not str

如果看到這里,看官有點(diǎn)糊涂是很正常的,特別是那個(gè)號(hào)稱萬(wàn)能的%r和%s,怎么都能夠?qū)υ緦儆?d的進(jìn)行正常輸出呢?

其實(shí),不管是%r還是%s(%d)都是把做為整數(shù)的對(duì)象轉(zhuǎn)化為字符串輸出了,而不是輸出整數(shù)。但是%r和%s是有點(diǎn)區(qū)別的,本講對(duì)這個(gè)暫不做深入研究,只是說(shuō)明這樣的對(duì)應(yīng):%s-->str();%r-->repr(),什么意思呢?就是說(shuō)%s調(diào)用的是str()函數(shù)把對(duì)象轉(zhuǎn)化為str類型,而%r是調(diào)用了repr()將對(duì)象轉(zhuǎn)化為字符串。關(guān)于兩者的區(qū)別請(qǐng)參考:Difference between str and repr in Python,下面是一個(gè)簡(jiǎn)單的例子,演示一下兩者區(qū)別:

>>> import datetime
>>> today = datetime.date.today()
>>> today
datetime.date(2014, 8, 15)
>>> str(today)
"2014-08-15"
>>> repr(today)
"datetime.date(2014, 8, 15)"

最后要表達(dá)我的一個(gè)觀點(diǎn),沒(méi)有什么萬(wàn)能的,一切都是根據(jù)實(shí)際需要而定。

關(guān)于更多的輸出格式占位符的說(shuō)明,這個(gè)頁(yè)面中有一個(gè)表格,可惜沒(méi)有找到中文的,如果看官找到中文的,請(qǐng)共享一下呀:string formatting

再擴(kuò)展
>>> myinfo
{"website": "qiwsir.github.io", "name": "qiwsir", "room": 703}
>>> print "qiwsir is in %(room)d"%myinfo
qiwsir is in 703

看官是否看明白上面的輸出了?有點(diǎn)意思。這樣的輸出算是對(duì)前面輸出的擴(kuò)展了。

出了這個(gè)擴(kuò)展之外,在輸出的時(shí)候,還可以用一個(gè)名曰:format的東西,這里面看不到%,但是多了{(lán)}??磳?shí)驗(yàn)先:

>>> print "My name is {0} and I am in {1}".format("qiwsir",703)     #將format后面的內(nèi)容以此填充
My name is qiwsir and I am in 703
>>> "My website is {website}".format(website="qiwsir.github.io")    #{}里面那個(gè)相當(dāng)于一個(gè)變量了吧
"My website is qiwsir.github.io"

看到這里,是不是感覺(jué)這個(gè)format有點(diǎn)意思?一點(diǎn)不輸給前面的輸出方式。據(jù)說(shuō),format會(huì)逐漸逐漸取代前面的。關(guān)于format,我計(jì)劃后面一講繼續(xù)。這里只是來(lái)一個(gè)引子,后面把用format輸出搞得多點(diǎn)。

恭請(qǐng)列為到我的github上及時(shí)更新的內(nèi)容:零基礎(chǔ)學(xué)python

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/37351.html

相關(guān)文章

  • [基礎(chǔ)學(xué)python]從if開始語(yǔ)句征程

    摘要:一般所有高級(jí)語(yǔ)言,都包含如下語(yǔ)句,也不例外循環(huán)語(yǔ)句容許一些語(yǔ)句反復(fù)運(yùn)行數(shù)次。條件語(yǔ)句容許僅當(dāng)某些條件成立時(shí)才運(yùn)行某個(gè)區(qū)塊。無(wú)條件分支語(yǔ)句容許運(yùn)行順序轉(zhuǎn)移到程序的其他部分之中。零基礎(chǔ)學(xué)我在上的文章,隨時(shí)更新修改。 一般編程的教材,都是要把所有的變量類型講完,然后才講語(yǔ)句。這種講法,其實(shí)不符合學(xué)習(xí)的特點(diǎn)。學(xué)習(xí),就是要循序漸進(jìn)的。在這點(diǎn)上,我可以很吹一通了,因?yàn)槲易鲞^(guò)教師,研究教育教學(xué),算是...

    caspar 評(píng)論0 收藏0
  • [基礎(chǔ)學(xué)Python]做一個(gè)小游戲

    摘要:在講述有關(guān)的時(shí)候,提到做游戲的事情后來(lái)這個(gè)事情一直沒(méi)有接續(xù)。現(xiàn)在就是開始做那個(gè)游戲的時(shí)候了。游戲過(guò)程描述程序運(yùn)行起來(lái),隨機(jī)在某個(gè)范圍內(nèi)選擇一個(gè)整數(shù)。我們現(xiàn)在做一個(gè)很小的程序,也是這樣來(lái)做。這個(gè)游戲還沒(méi)有完呢,即使用了循環(huán),后面還會(huì)繼續(xù)。 在講述有關(guān)list的時(shí)候,提到做游戲的事情,后來(lái)這個(gè)事情一直沒(méi)有接續(xù)。不是忘記了,是在想在哪個(gè)階段做最合適。經(jīng)過(guò)一段時(shí)間學(xué)習(xí),看官已經(jīng)不是純粹小白了,...

    idisfkj 評(píng)論0 收藏0
  • [基礎(chǔ)學(xué)python]用while來(lái)循環(huán)

    摘要:我在這里將他寫的程序恭錄于此,單元李航同學(xué)不要見怪,如果李航同學(xué)認(rèn)為此舉侵犯了自己的知識(shí)產(chǎn)權(quán),可以告知我,我馬上撤下此代碼。我用的是,在輸入指令上區(qū)別于李同學(xué)程序用變量接收了輸入的內(nèi)容。 while,翻譯成中文是當(dāng)...的時(shí)候,這個(gè)單詞在英語(yǔ)中,常常用來(lái)做為時(shí)間狀語(yǔ),while ... someone do somthing,這種類型的說(shuō)法是有的。在python中,它也有這個(gè)含義,不過(guò)...

    Tony 評(píng)論0 收藏0
  • [基礎(chǔ)學(xué)python]畫圈還不簡(jiǎn)單嗎?

    摘要:畫圈換一個(gè)說(shuō)法就是循環(huán)。就相當(dāng)于讓依次等于中的各個(gè)值。例找出以內(nèi)的能夠被整除的正整數(shù)。以上做了簡(jiǎn)單分析,要實(shí)現(xiàn)流程,還需要細(xì)化一下。代碼代碼運(yùn)行結(jié)果這里僅僅列舉一個(gè)簡(jiǎn)單的例子,看官可以在這個(gè)例子基礎(chǔ)上深入打印某范圍內(nèi)的偶數(shù)奇數(shù)等。 畫圈?換一個(gè)說(shuō)法就是循環(huán)。循環(huán),是高級(jí)語(yǔ)言編程中重要的工作?,F(xiàn)實(shí)生活中,很多事情都是在循環(huán),日月更迭,斗轉(zhuǎn)星移,無(wú)不是循環(huán);王朝更迭,尋常百姓,也都是循環(huán)。...

    ccj659 評(píng)論0 收藏0
  • [基礎(chǔ)學(xué)Python]有點(diǎn)簡(jiǎn)約元組

    摘要:關(guān)于元組,上一講中涉及到了這個(gè)名詞。元組是用圓括號(hào)括起來(lái)的,其中的元素之間用逗號(hào)隔開。使用而不是如同擁有一個(gè)隱含的語(yǔ)句,說(shuō)明這一數(shù)據(jù)是常量。必須是不可變的。只有字符串整數(shù)或其它對(duì)安全的才可以用作。 關(guān)于元組,上一講中涉及到了這個(gè)名詞。本講完整地講述它。 先看一個(gè)例子: >>>#變量引用str >>> s = abc >>> s abc >>>#如果這樣寫,就會(huì)是... >>> t...

    leap_frog 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<