《Python核心編程》第二版第36頁第二章練習 續二 -Python核心編程答案-自己做的-

來源:互聯網
上載者:User

2-11.
帶文本菜單的程式。寫一個帶文本菜單的程式,功能表項目如下:(1)取五個數的和;(2)取五個數的平均值...(X)退出。由使用者做一個選擇,然後執行相應的功能。當使用者選擇退出時程式結束。這個程式的有用之處在於使用者在功能之間切換不需要一遍一遍地重新啟動你的指令碼(這對開發人員測試自己的程式也會大有用處)。
【答案】
代碼如下:
def to_total():
    total = 0
    a = [1, 2, 3, 4, 5]
    for i in range(0, 5):
        print 'Please input number', i+1
        a[i] = float(raw_input())
        total = total + a[i]
    print total
   
def to_average():
    total = 0
    a = [1, 2, 3, 4, 5]
    for i in range(0, 5):
        print 'Please input number', i+1
        a[i] = float(raw_input())
        total = total + a[i]
    print total / 5.
   

print 'Please select ... \n'
print '(1) To get the total of 5 numbers, please input letter "a" ... '
print '(2) To get the average of 5 numbers, please input letter "b" ... '
print '(x) To quit, please input letter "x" ... \n'
choice = raw_input('Your choice is ... ')
if choice == 'a':
    to_total()
elif choice == 'b':
    to_average()
elif choice == 'x': pass
【未完】這段代碼還有最佳化的空間,另外,也沒有檢查輸入不是數位情況。

2-12.
dir()內建函數。
(a)啟動Python互動式解譯器。通過直接鍵入dir()斷行符號以執行dir()內建函數。你看到什嗎?顯示你看到的每一個列表元素的值,記下實際值和你想象的值。
(b)你會問,dir()函數是幹什麼的?我們已經知道在dir後邊加上一對括弧可以執行dir()內建函數,如果不加括弧會如何?試一試。解譯器會返回給你什麼資訊?你認為這個資訊表示什麼意思?
(c)type()內建函數接收任意的Python對象作為參數並返回他們的類型。在解譯器中鍵入type(dir),看看你得到的是什麼。
(d)本練習的最後一部分,我們來瞧一瞧Python的文檔字串。通過dir.__doc__可以訪問dir()內建函數的文檔字串。print dir.__doc__可以顯示這個字串的內容。許多內建函數、方法、模組及模組屬性都有相應的文檔字串。我們希望你在你的代碼中也要書寫文檔字串,它會對使用這些代碼的人提供及時方便的協助。
【答案】
代碼如下:
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\root>python
Python 2.7 (r27:82525, Jul  4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__']
>>> dir
<built-in function dir>
>>> type(dir)
<type 'builtin_function_or_method'>
>>> dir.__doc__
"dir([object]) -> list of strings\n\nIf called without an argument, return the names in the current scope.\nElse, return an alphabetized list of names comprisin
g (some of) the attributes\nof the given object, and of attributes reachable from it.\nIf the object supplies a method named __dir__, it will be used; otherwise
\nthe default dir() logic is used and returns:\n  for a module object: the module's attributes.\n  for a class object:  its attributes, and recursively the attr
ibutes\n    of its bases.\n  for any other object: its attributes, its class's attributes, and\n    recursively the attributes of its class's base classes."
>>> print dir.__doc__
dir([object]) -> list of strings

If called without an argument, return the names in the current scope.
Else, return an alphabetized list of names comprising (some of) the attributes
of the given object, and of attributes reachable from it.
If the object supplies a method named __dir__, it will be used; otherwise
the default dir() logic is used and returns:
  for a module object: the module's attributes.
  for a class object:  its attributes, and recursively the attributes
    of its bases.
  for any other object: its attributes, its class's attributes, and
    recursively the attributes of its class's base classes.
>>>

2-13.
利用dir()找出sys模組中更多的東西。
(a)啟動Python互動式解譯器,執行dir()函數。然後鍵入import sys以匯入sys模組。再次執行dir()函數以確認sys模組被正確匯入。然後執行dir(sys),你就可以看到sys模組的所有屬性了。
(b)顯示sys模組的版本號碼屬性及平台變數。記住在屬性名稱前一定要加sys.,這表示這個屬性是sys模組的。其中version變數儲存著你使用的Python解譯器版本, platform屬性則包含你運行Python時使用的電腦平台資訊。
(c)最後,調用sys.exit()函數。這是一種熱鍵之外的另一種推出Python解譯器的方式。
【答案】
代碼如下:
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\root>python
Python 2.7 (r27:82525, Jul  4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__']
>>> import sys
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'sys']
>>> dir(sys)
['__displayhook__', '__doc__', '__excepthook__', '__name__', '__package__', '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_current_frames', '_g
etframe', 'api_version', 'argv', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dllhandle', 'dont_write_bytecode
', 'exc_clear', 'exc_info', 'exc_type', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', 'getcheckinterval', 'getde
faultencoding', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'gettrace', 'getwindowsversion', 'hexversion', 'long_inf
o', 'maxint', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', 'ps2', 'py3kwarning', '
setcheckinterval', 'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout', 'subversion', 'version', 'version_info', 'warnoptions', 'winver']

>>> sys.version
'2.7 (r27:82525, Jul  4 2010, 09:01:59) [MSC v.1500 32 bit (Intel)]'
>>> sys.platform
'win32'
>>> sys.exit()

C:\Documents and Settings\root>

2-14.
操作符優先順序和括弧分組。重寫2.4小節中print語句裡的算術運算式,試著在這個運算式中添加合適的括弧以便它能正常工作。
【答案】
代碼如下:
>>> print -2 * 4 + 3 ** 2
1
>>> print -2 * (4 + 3) ** 2
-98
>>> print (-2 * (4 + 3)) ** 2
196
>>>

這裡列出的答案不是來自官方資源,是我自己做的練習,可能有誤。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.