2-10. 帶循環和條件判斷的用戶輸入。用raw_input()函數來提示用戶輸入一個1和100之間的數,如果用戶輸入的數滿足這個條件,顯示成功並退出。否則顯示一個錯誤消息然後再次提示用戶輸入數值,直到滿足條件爲止。
答案:
#!/usr/bin/env python while True: num=int(raw_input('Enter a number between 1 and 100:')) if 1<=num<=100: print 'succed' break else: print 'There is a error,please input again'
2-11. 寫一個帶文本菜單的程序,菜單項如下:(1)取五個數的和;(2)取五個數的平均值;(X)退出。由用戶做一個選擇,然後執行相應的功能。當用戶選擇退出時程序結束。這個程序的有用之處在於用戶在功能之間切換不需要一遍又一遍的重新啓動你的腳本。
答案:
#!/usr/bin/env python numlist=[1,2,3,4,5] print "There are five numbers", print numlist s=0 for i in numlist: s=s+i def avg(s): avg=float(s)/5 print "The average is",avg def sum(s): print "The summary is",s ele=raw_input("Enter your choice:") while True: if ele=='1': sum(s) elif ele=='2': avg(s) elif ele=='x': break else: print "Error" ele=raw_input("Enter your choice again:")
2-12.dir()內建函數。
(a)啓動Python交互式解釋器,通過直接鍵入dir()回車以執行dir()函數內建函數。你看到什麼?顯示你看到的每一個列表元素的值,記下實際值和你想象的值。
(b)你會問,dir()函數是幹什麼的?我們已經知道在dir後面加一對括號可以執行dir()內建函數,如果不加括號會如何?試一試,解釋器返回給你什麼信息?你認爲這個信息表示什麼意思?
(c)type()內建函數接收任意的Python對象作爲參數並返回它們的類型,在解釋器中鍵入type(dir()),看看得到什麼?
(d)本練習的最後一部分,我們來瞧一瞧Python的文檔字符串。通過dir.__doc__可以訪問dir()內建函數的文檔字符串。print dir.__doc__可以顯示這個字符串的內容。許多內建函數﹑方法﹑模塊及模塊屬性都有相應的文檔字符串。我們希望你在你的代碼中也要書寫文檔字符串,它會對這些使用這些代碼的人提供及時方便的幫助。
答案:
(a)dir()函數的輸出如下:
dir()函數能夠列出目前的模塊,內建函數和變量。
(b)不加括號的dir輸出如下,表示是一個內建函數:
(c)type(dir)的輸出如下:
翻譯:如果調用的時候不加任何參數,就返回當前當前作用域的名字。否則,返回給定對象根據字母順序組成的屬性列表以及能夠從該對象得到的屬性。如果對象提供了__dir__方法,就會使用該方法,否則就使用默認的dir()邏輯並返回:對於模塊對象,返回模塊的屬性;對於類,則返回其屬性及其遞歸屬性;
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解釋器的方式。
答案:
(a)
(b)
2-14.操作符優先級和括號分組。重寫2.4小結中的Print與語句裏的算術表達式,試着在這個算術表達式中添加適當的括號以便它能正常工作。
print (-2)*4+3**2
2-15.元素排序。讓用戶輸入3個數值並分別將他們保存到三個不同的變量中。不用列表或者排序算法,自己寫代碼來對3個數由小到大排序,然後修改,由大到小排序。
#!/usr/bin/env python n1=int(raw_input("Enter first number:")) n2=int(raw_input("Enter second number:")) n3=int(raw_input("Enter 3rd number:")) if n1>n2: t=n1 n1=n2 n2=t if n1>n3: t=n1 n1=n3 n3=t if n2>n3: t=n2 n2=n3 n3=t print n1,n2,n3