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
>>>
這裡列出的答案不是來自官方資源,是我自己做的練習,可能有誤。