高級編程技術(Python)作業2

2-7 剔除人名中的空白:存儲一個人名,並在其開頭和末尾都包含一些空白字符。務必至少使用字符組合”\t” 和”\n” 各一次。打印這個人名,以顯示其開頭和末尾的空白。然後,分別使用剔除函數lstrip() 、rstrip() 和strip() 對人名進行處理,並將結果打印出來。

Solution:

name = "\n Tim Peters \t"
print(name)
print(name.lstrip())
print(name.rstrip())
print(name.strip())

Output:


 Tim Peters     
Tim Peters  

 Tim Peters
Tim Peters

2-8 數字8:編寫4個表達式,它們分別使用加法、減法、乘法和除法運算,但結果都是數字8。爲使用print語句來顯示結果,務必將這些表達式用括號括起來,也就是說, 你應該編寫4行類似於下面的代碼:

print(5+3)

輸出應爲4行,其中每行都只包含數字8。

Solution:

print(2+6)
print(9-1)
print(2*4)
print(round(16/2))  #using print(16/2) will output 8.0

Output:

8
8
8
8

這裏直接使用print(16/2)將會出現浮點數8.0,需要使用round函數進行精度的保留

2-11 Python之禪:在Python終端會話中執行命令import this ,並粗略地瀏覽一下其他的指導原則。

Solution:

import this

Output:

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

此處貼出this的源代碼

s = """Gur Mra bs Clguba, ol Gvz Crgref

Ornhgvshy vf orggre guna htyl.
Rkcyvpvg vf orggre guna vzcyvpvg.
Fvzcyr vf orggre guna pbzcyrk.
Pbzcyrk vf orggre guna pbzcyvpngrq.
Syng vf orggre guna arfgrq.
Fcnefr vf orggre guna qrafr.
Ernqnovyvgl pbhagf.
Fcrpvny pnfrf nera'g fcrpvny rabhtu gb oernx gur ehyrf.
Nygubhtu cenpgvpnyvgl orngf chevgl.
Reebef fubhyq arire cnff fvyragyl.
Hayrff rkcyvpvgyl fvyraprq.
Va gur snpr bs nzovthvgl, ershfr gur grzcgngvba gb thrff.
Gurer fubhyq or bar-- naq cersrenoyl bayl bar --boivbhf jnl gb qb vg.
Nygubhtu gung jnl znl abg or boivbhf ng svefg hayrff lbh'er Qhgpu.
Abj vf orggre guna arire.
Nygubhtu arire vf bsgra orggre guna *evtug* abj.
Vs gur vzcyrzragngvba vf uneq gb rkcynva, vg'f n onq vqrn.
Vs gur vzcyrzragngvba vf rnfl gb rkcynva, vg znl or n tbbq vqrn.
Anzrfcnprf ner bar ubaxvat terng vqrn -- yrg'f qb zber bs gubfr!"""

d = {}
for c in (65, 97):
    for i in range(26):
        d[chr(i+c)] = chr((i+13) % 26 + c)

print("".join([d.get(c, c) for c in s]))

這是Tim Peters寫下的一個小彩蛋,雖然後面的部分我們仍然沒有學習,但是通過s字符串的觀察我們可以看出其實就是每一個字母的ASCII碼減13就是他想要輸出的字母。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章