5-1 整形 講講 Python 普通整型和長整型的區別python
python有三種整數類型:布爾型,標準整數類型,長整型app
Python標準整數類型是最通用的數字類型。 在大多數32位機器上,標準整數類型的取值範圍:-2147483648 到 2147483647 dom
Python標準整數類型等價於C的有符號長整型。 八進制整數以數字「0」開始。 十六進制整數以「0x」或「0X」開始 。函數
Python長整型能表達的數值僅僅與機器值的(虛擬)內存大小有關。 長整數類型是標準整數類型的超集。 spa
在一個整數值後面加上個L(大寫或小寫均可以,推薦使用大寫,避免和數字1混淆),表示這個整數時長整數, 這個整數能夠是十進制、八進制、十六進制。 code
只有對長整數調用repr()纔有機會看到L,對長整數調用str()看不到L,整型和長整型正在統一爲一種。 對象
5-2 運算符
(a) 寫一個函數,計算並返回兩個數的乘積
(b) 寫一段代碼調用這個函數,並顯示它的結果blog
def chengji(): a=10 b=5 return a*b chengji()
5-3 標準類型運算符. 寫一段腳本,輸入一個測驗成績,根據下面的標準,輸出他的評分
成績(A-F)。
A: 90–100
B: 80–89
C: 70–79
D: 60–69
F: <60排序
def grade(score): if 90 <= score <= 100: grade="A" elif 80 <= score <= 89: grade="B" elif 70 <= score <= 79: grade="C" elif 60 <= score <= 69: grade="D" else: grade="F" return grade grade(60)
5-4 取餘。判斷給定年份是不是閏年。使用下面的公式:內存
一個閏年就是指它能夠被 4 整除,但不能被 100 整除, 或者它既能夠被 4 又能夠被 100 整
除。好比 1992,1996 和 2000 年是閏年,但 1967 和 1900 則不是閏年。下一個是閏年的整世
紀是 2400 年
def leap_year(year): if (year%4 == 0 and year%100 !=0) or year%400 == 0: return True else: return False leap_year(2017)
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 美分這樣的結果都是不符合要求的。
def cent(dollar): dollar=dollar*100 a=dollar/25 b=dollar%25 c=b/10 d=b%10 print "%d枚 25 美分,%d枚 10 美分,%d枚 1 美分"%(a,c,d) cent(0.78)
5-6 算術。寫一個計算器程序 你的代碼能夠接受這樣的表達式,兩個操做數加一個運算符:
N1 運算符 N2. 其中 N1 和 N2 爲整數或浮點數,運算符能夠是+, -, *, /, %, ** 分別表示
加法,減法, 乘法, 整數除,取餘和冪運算。計算這個表達式的結果,而後顯示出來。提示:
可使用字符串方法 split(),但不可使用內建函數 eval().
def calculator(): string=raw_input(">>") if "**" in string: string=string.split("**") N1=float(string[0]) N2=float(string[1]) result=N1**N2 return result elif "+" in string: string=string.split("+") N1=float(string[0]) N2=float(string[1]) result=N1+N2 return result elif "-" in string: string=string.split("-") N1=float(string[0]) N2=float(string[1]) result=N1-N2 return result elif "/" in string: string=string.split("/") N1=float(string[0]) N2=float(string[1]) result=N1/N2 return result elif "%" in string: string=string.split("%") N1=float(string[0]) N2=float(string[1]) result=N1%N2 return result elif "*" in string: string=string.split("*") N1=float(string[0]) N2=float(string[1]) result=N1*N2 return result calculator()
5-8 幾何。計算面積和體積:
(a) 正方形 和 立方體
(b) 圓 和 球
def square(length): mianji=length**2 print mianji def cube(length): tiji=length**3 print tiji def circular(r): mianji=3.14*r**2 print mianji def ball(r): tiji=3.0/4.0*r**3 print tiji if __name__=="__main__": try: num=int(raw_input(">>")) square(num) cube(num) circular(num) ball(num) except ValueError,e: print "Input a invaild num"
5–9. 數值形式 回答下面關於數值格式的問題:
(a) 爲何下面的例子裏 17+32 等於 49, 而 017+32 等於 47, 017+032 等於 41?
17 32爲十進制數;017爲8進制數,轉換爲十進制爲15;032也爲8進制數,轉換爲十進制爲26
(b)爲何下面這個表達式咱們獲得的結果是 134L 而不是 1342 ?
>>> 56l + 78l
134L
56 和78後面爲小寫的L,爲長整型對象
5-10 轉換。寫一對函數來進行華氏度到攝氏度的轉換。轉換公式爲 C = (F - 32) * (5 / 9)
應該在這個練習中使用真正的除法, 不然你會獲得不正確的結果。
def centigrade(): f=float(raw_input(">>")) c = (f - 32.0) * (5.0 / 9.0) print c centigrade()
5-11 取餘。
(a) 使用循環和算術運算,求出 0-20 之間的全部偶數
print "偶數爲:" for i in range(21): if i%2 == 0 and i!=0: print i
(b) 同上,不過此次輸出全部的奇數
print "奇數爲:" for i in range(21): if i%2 != 0: print i
(c) 綜合 (a) 和 (b), 請問辨別奇數和偶數的最簡單的方法是什麼?
能不能被2整除
(d) 使用(c)的成果,寫一個函數,檢測一個整數可否被另外一個整數整除。 先要求用戶輸
入兩個數,而後你的函數判斷二者是否有整除關係,根據判斷結果分別返回 True 和 False;
def division(): a=float(raw_input(">>")) b=float(raw_input(">>")) if a%b == 0: print True else: print False division()
5-13 轉換。寫一個函數把由小時和分鐘表示的時間轉換爲只用分鐘表示的時間。
def minute(): time=raw_input("輸入格式爲hour:minute>>") time=time.split(":") hour=int(time[0]) minute=int(time[1]) result=6*hour+minute print result minute()
5-14 銀行利息。寫一個函數,以按期存款利率爲參數, 假定該帳戶每日計算複利,請計
算並返回年回報率。
def rate(): money=float(raw_input(">>")) rate=float(raw_input(">>")) for i in range(3): money+=money*rate print money return money rate()
5–15. 最大公約數和最小公倍數。請計算兩個整數的最大公約數和最小公倍數
def gongyueshu(m,n): if m<n: small = m else: small = n for i in range (small,0,-1): if m % i == 0 and n %i == 0: return i def gongbeishu(m,n): gongyue = gongyueshu(m,n) return (m*n)/gongyue gong = gongyueshu(m=10, n=3) print gong gongbei = gongbeishu(m=10,n=3) print gongbei
5-16 家庭財務。給定一個初始金額和月開銷數, 使用循環,肯定剩下的金額和當月的支
出數, 包括最後的支出數。 Payment() 函數會用到初始金額和月額度, 輸出結果應該相似下
面的格式(例子中的數字僅用於演示):
Enter opening balance:100.00
Edit By Vheavens
Edit By Vheavens
Enter monthly payment: 16.13
Amount Remaining
Pymt# Paid Balance
----- ------ ---------
0 $ 0.00 $100.00
1 $16.13 $ 83.87
2 $16.13 $ 67.74
3 $16.13 $ 51.61
4 $16.13 $ 35.48
5 $16.13 $ 19.35
6 $16.13 $ 3.22
7 $ 3.22 $ 0.00
def pay(total,amount): print "0 0 %r"%(total) remains=total-amount i=1 while remains>=0: print "%d %r %r"%(i,amount,remains) remains=remains-amount i+=1 print "%d %r 0"%(i,amount) pay(100,30)
5-17 隨機數。熟讀隨機數模塊而後解下面的題:
生成一個有 N 個元素的由隨機數 n 組成的列表, 其中 N 和 n 的取值範圍分別爲: (1 <
N <= 100), (0 <= n <= 231 -1)。而後再隨機從這個列表中取 N (1 <= N <= 100)個隨機數
出來, 對它們排序,而後顯示這個子集
#排除相同隨機數
def random_without_same(): N=random.randint(0,100) temp = range(0, 231)
random.sample(temp,N) print temp random_without_same()
#對重複的隨機數不作處理
N=random.randint(0,100) lis=[]for i in range(N): temp=random.randint(0,231) lis.append(temp) lis.sort() print lis
問:第17題中n的取值範圍0 <= n <= 231 -1 231 -1是什麼意思?是230的意思嗎