python核心程式設計,第五章練習題
5.1 整型,講講python普通整型與長整型區別
python整形一共有三種:布林型,長整型和常規整型。普通型和長整型主要的區別是,能表示的資料位數的不同。
5.2 定義一個函式,用於兩個數相乘,並呼叫這個函式
>>> def plusTwo(a,b): return a * b >>> plusTwo(3,4) 12 >>> plusTwo("adc",4) 'adcadcadcadc' |
5-3 標準型別運算子. 寫一段指令碼,輸入一個測驗成績,根據下面的標準,輸出他的評分
成績(A-F)。
A: 90–100
B: 80–89
C: 70–79
D: 60–69
F: <60
(以下指令碼,最好在增加對輸入資料的判斷!!!!!)
#!/usr/bin/python def scoreOut(x): scoreDic = {9:"A",8:"B",7:"C",6:"D"} score = x / 10 for item in sorted(scoreDic.keys(),reverse = True): if score >= item: out = scoreDic[item] break else: out = "F" return out if __name__ == "__main__": score = input("Enter your number,Please!") print "Your level is: %s" % scoreOut(score) |
5-4 取餘。判斷給定年份是否是閏年。使用下面的公式:
一個閏年就是指它可以被 4 整除,但不能被 100 整除, 或者它既可以被400整(我覺得既可以被4整除又可以被100整除又問題,這樣1900年什麼的都是閏年了)
除。比如 1992,1996 和 2000 年是閏年,但 1967 和 1900 則不是閏年。下一個是閏年的整世
紀是 2400 年。
#!/usr/bin/python def leapYear(x): if ((x % 4 == 0 and x % 100 != 0) or (x % 400 == 0)): return "Yes" else: return "No" if __name__ == "__main__": year = input("Enter the year,Please!") print "Year %d is leap year: %s" % (year,leapYear(year)) |
5-5 取餘。取一個任意小於 1 美元的金額,然後計算可以換成最少多少枚硬幣。硬幣有 1美分,5 美分,10 美分,25 美分四種。1 美元等於 100 美分。舉例來說,0.76 美元換算結果應該是 3 枚 25 美分,1 枚 1 美分。類似 76 枚 1 美分,2 枚 25 美分+2 枚 10 美分+1 枚 5 美分+1枚 1 美分這樣的結果都是不符合要求的。
#!/usr/bin/python def leastCoin(coinNum): #coin 25,10,5,1 #Get the least coin number coin = [25,10,5,1] coinN = [] for item in coin: coinN.append(coinNum / item) coinNum = coinNum % item return coinN if __name__ == "__main__": coin = input("Enter your coin num,Please!") coinN = leastCoin(coin) print "The least coin for %d is 25:%d,10:%d,5:%d,1:%d" % (coin,coinN[0],coinN[1],coinN[2],coinN[3]) |
5–9. 數值形式 回答下面關於數值格式的問題:
(a) 為什麼下面的例子裡 17+32 等於 49, 而 017+32 等於 47, 017+032 等於 41?
>>> 17 + 32
49
>>> 017+ 32
47
>>> 017 + 032
41
(b)為什麼下面這個表示式我們得到的結果是 134L 而不是 1342 ?
>>> 56l + 78l (只要有一個數據為長整數,結果均為長整數)
134L
(a)17+32:均為10進位制,017+32:八進位制017, 017+032:均為8進位制
(b)數字型別是長整形而不是字串
5-12 系統限制。寫一段指令碼確認一下你的 Python 所能處理的整數,長整數,浮點數和複數的範圍
具體可以參見sys+ http://hi.baidu.com/slqbl/item/325325dee0d7a8ee3cc2cbe7
5-17 隨機數。熟讀隨機數模組然後解下面的題: 生成一個有 N 個元素的由隨機數 n 組成的列表, 其中 N 和 n 的取值範圍分別為: (1 < N <= 100), (0 <= n <= 231 -1)。然後再隨機從這個列表中取 N (1 <= N <= 100)個隨 機數出來, 對它們排序,然後顯示這個子集。
有關隨機數的知識可以參考連線:http://hi.baidu.com/lx58732553/item/a24ef01ee19fc2737b5f2586
#!/usr/bin/python import random #random -- the module to generate random number num = random.randint(1,100) lst = [] for item in range(num): tmp = random.randint(0,(pow(2,31) - 1)) lst.append(tmp) lst.sort() print lst |