1. 程式人生 > >python核心程式設計,第五章練習題

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