?
題例1
# 打印如下長方形: ************ * * * * ************ # 打印如下長方形: print("*****************") print("* *") print("* *") print("*****************")
題例2
# 中國古代的秤是16兩一斤,請問古代的216兩是古代的幾斤幾兩? # 寫程序打印出來 all_liang = 216 jin = all_liang // 16 # 得到古代的斤 liang = all_liang % 16 # 得到古代的兩 print(all_liang,"是古代的",jin,"斤",liang,"兩")
題例3
# 從凌晨0:0:0 計時,到現在已經過了 63320秒,請問現在是幾時,幾分,幾秒,寫程序打印出來 # (提示:用地板除和求余實現)# 計算時分秒 h = 63320 // 60 // 60 # 小時 f = 63320 // 60 % 60 # 分鐘 m = 63320 % 60 # 秒 print(h,"小時",f,"分鐘",m,"秒")
題例4
# 溫度轉換: # 攝氏溫度 = 5.0 / 9.0 * (華氏溫度-32) # 開氏溫度 = 攝氏溫度 + 273.15 # 問: # 100華氏溫度轉為攝氏溫度是多少度,轉為開氏溫度是多少度?# 方法1 huashi = 100 sheshi = 5.0 / 9.0 *(huashi - 32) print(huashi,"華氏度等于",sheshi,"攝氏度") kaishi = sheshi + 273.15 print(huashi,"華氏度等于",kaishi,"開氏度")# 方法2 # 穩定轉換 s = 5.0 / 9.0 * (100-32) k = s + 273.15 s = s // 1 # s = round(s,1) k = k //1 # k = round(k,1) print("攝氏溫度",s,"度") print("開氏溫度",k,"度")
題例5
# 北京出租車計價程序 # 收費標準: # 3公里以內收費13元 # 基本單價 2.3元/公里(超出3公里以外) # 空駛費:超過15公里后,每公里加單價的50%空駛費(即:15公里后為 3.45元/公里) # 要求: # 輸入公里數,打印出費用金額(以元為單位,精確到分,分以后四舍五入) km = float(input("請輸入公里:")) if 1<= km <=3:print("收取費用:13元")elif km >15:d = (km-15)*3.45 + 13 + 2.3 * 12 # 超過15里必須漲價,沒有超過15公里不漲價d = round(d,2)print("消費費用:",d,"元")elif km<=0:print("請重新輸入!")else:s = (km-3)*2.3 + 13 s = round(s,2)print("消費金額",s,"元")
題例6
# 寫程序,任意給出三個數,打印出三個數中最大的一個數 a = int(input("請輸入第一個數字:")) b = int(input("請輸入第二個數字:")) c = int(input("請輸入第三個數字:")) # 改進算法: # 先假設第一個最大,用變量綁定 zuida = a if b > zuida:zuida = b if c > zuida:zuida=c print("最大數是:",zuida)
題例7
# BMI 指數(Body Mass Index) 又稱身體質量指數 # BMI值計算公式: BMI = 體重(公斤)/身高的平方(米) # 如: # 一個69公斤的人,身高是173公分 # BMI = 69 / 1.73 ** 2 得 23.05 # 標準表: # BMI < 18.5 體重過輕 # 18.5 <= BMI < 24 正常范圍 # BMI > 24 體重過重 # 輸入身高和體重,打印出BMI的值,并打印出體重狀況 s = float(input("請輸入身高:")) t = float(input("請輸入體重:")) bmi = t / s ** 2 bmi = round(bmi,2) if bmi <= 18.5:print(bmi,"體重過輕") elif 18.5<=bmi<24:print("BMI是:",bmi,"正常范圍") else:bmi > 24print("BMI是:",bmi,"體重過重")
題例8
# 給出一個年份,判斷是否為閏年并打印 # 規則: # 每四年一閏,每百年不閏,每四百年有閏 # 如: # 2016年 閏年 # 2100年 不是閏年 # 2400年 是閏年 # 輸入一個年份,打印這一年是否是閏年 y = int(input("請輸入月份:")) # 方法1 # 能被400整除或能被4整除但不能被100整除 if yue % 400 == 0 or (y % 4 == 0 and y % 100 !=0):print("是閏年") else:print("不是閏年")# 方法2 if y % 400 == 0:print("是閏年") elif y % 100 ==0:print("不是閏年") elif y % 4 ==0:print("是閏年") else:print("不是閏年")# 方法3 z = yue % 4 == 0 y = yue % 400 == 0 x = yue % 100 != 0 if (z and y)or x:print("是閏年") else:print("不是閏年")
題例9
# 輸入一個字符串,把輸入的字符串中的空格全部去掉,打印出處理后的字符串的長度和字符串的內容 s = input("請輸入字符串:") d = s.replace(" ","") print("長度是:",len(d),"字符串內容:",d)
題例10
# 輸入三行文字,讓這三行文字在一個方框居中顯示 # (注:不要輸入中文) # 如輸入: # hello! # I'm studing python! # I like python! # 打印如下: # +---------------------+ # | hello! | # | I'm studing python | # | I like python | # +---------------------+ a = input("請輸入第一個文字:") b = input("請輸入第二個文字:") c = input("請輸入第三個文字:") s = max(len(a),len(b),len(c)) line = "+-"+"-"*s+"-+" print(line) print("| "+a.center(s)+" |") print("| "+b.center(s)+" |") print("| "+c.center(s)+" |") print(line)
題例11
# 1.打印0~30 范圍內的所有偶數(能被2整除的數)
# 方法1 i = 0 while i <=30:if i % 2 == 0:print(i,end=" ")i += 1 print()# 方法2 i = 0 while i <= 30:print(i,end=" ")i+=2 print()
題例12
# 2.寫程序用while 語句生成如下的字符串,并打印出來 # 1) "ABCD.............XYZ" # 2) "AaBbCcDd.......XxYyZz"# 方法1 i = ord("A") d = ord("a") while i <=ord("Z"):print(chr(i),end="")print(chr(d),end=" ")d += 1i += 1 print()# 方法2 d = ord("a")-1 for x in range(ord("A"),ord("Z")+1):d = d + 1print(chr(x),end="")print(chr(d),end=" ") print()
題例13
# 3.寫程序求: # 1/1 + 1/3 + 1/5 + 1/7 + .....+1/99 的和# 方法1 i = 1 he=0 while i <=99:he = he + 1/ii = i + 2 print(he)
# 方法2
s = 0
fenmu = 1
while fenmu <= 99:
s += 1/fenmu
fenmu += 2
print(s)
題例14
# 4.寫程序求: # 1/1 - 1/3 + 1/5 - 1/7 + ..... +(+1)1/(2*n-1)的和 # 1)求當n取1000000時這個算式的和 # 2)求當n取1000000時這個算式的和乘4時多少 # (答案:3.1415....)# 問題 1 while i <= 1000000:he = he + 1/(2*i-1)*dd = d * (-1)i+=1 print(he) print(4*he)# 問題 2 s = 0 #累加和 n = 1 #分母 sign = 1 #符號 while n <= 1000000:s += sign * 1 / (2*n-1)sign *= -1 # 改變符號的正負n += 1 print(s) print(s*4) #3.1415
題例15
# 5.打印九九乘法表 (需用到循環嵌套) # 1x1=1 # 1x2=2 2x2=4 # 1x3=3 2x3=6 3x3=9 # .... # 1x9=9....................... 9x9=81 i = 1 while i<=9:ji = 1while ji <=i:p = ji * iprint(ji,"x",i,"=",p,end=" ")ji += 1print()i+=1# 第一重循環控制行數 y = 1 while y<=9:# 此處打印一行訂內容,每行打印y個乘法x = 1while x <= y:#打印x *y的一列print("%dx%d=%-2d"%(x,y,x*y),end=" ")x += 1print() #換行y+=1
題例16
# 練習: # 1.輸入一個整數,代表樹干的高度,打印如下一顆“圣誕樹” # 如: # 請輸入:2 # 打印 # * # *** # * # * # 如: # 請輸入:3 # 打印 # * # *** # ***** # * # * # *# 方法1 n = int(input("請輸入一個整數:")) i = 1 while i <= n:s = "*"*(2*i-1)d = (2*n-1)print(s.center(d))i+=1 w = 1 while w <=n:print("*".center(d))w += 1# 方法2 n = int(input("請輸入一個整數:")) # 打印樹冠部分 d = (2*n-1) # d 代表樹冠最大下層葉子的星號個數 for x in range(1,n+1): # x line 代表行號s = "*"*(2*x-1)print(s.center(d)) # 打印樹干部分 for r in range(1,n+1):print("*".center(d)) for _ in range(n):print(" "*(n-1)+"*")
題例17
# 2.寫一個程序,任意輸入一個整數,判斷這個數是否是素數(prime) # 打印結果 # 素質(也質數),只能被1和自身除的正整數 # 如: 2 3 5 7 11 13 17 19 ..... # 提示: # 用排除法,當判斷x是否素數時,只要讓x分別除以 2,3,4,5,...x-1,只要有一個能被整除,則x不是素數 # 否則x為素數 x = int(input("請輸入一個整數:")) if x<2:print("不是素數") else:# 判斷x不是素數for s in range(2,x):
if x % s == 0: #整除print("不是素數") break# 能不能在此知道x是否為素數?else:print("是素數")
題例18
# 3. 輸入三行,將這三行文字 保存于一個列表L中,并打印 # 如: # 請輸入:ABC # 請輸入:123 # 請輸入:你好 # 生成如下列表并打印: # print(L) # ["ABC","123","你好"] # 方法 1 l = [] while True:n = int(input("請輸入文字:"))if n < 0:breakl += [n] print(l)
題例19
# 練習: # 1. 已知有一個字符串: # s = "100,200,300,500,800" # 將其轉化為列表,列表內都為整數,即: # L = [100,200,300,500,800] s = "100,200,300,500,800" l = s.split(",") d =[] for x in l:d = d + [int(x)] print(d,end=" ") print()s = "100,200,300,500,800" l2 = s.split(",") #['100', '200', '300', '500', '800'] l = [int(x)for x in l2] print(l)
題例20
# 2. 將一些數存于列表中,如: # L = [1,3,2,1,6,4,2,.....,98,82] # 1)將列表中出現的數字存入到另一個列表L2中 # 要求: # 重復出現多次的數只在L2列表中保留一份(去重) # 2)將列表中出現兩次的數字存于L3列表中,在L3列表中只保留一份 # 問1 l = [1,3,2,1,6,4,2,98,82] l2 = [] l3 = [] for x in l:if l2.count(x)==0:l2.append(x)if l.count(x)==2 and l3.count(x)==0:l3 +=[x] print(l2) print(l3)# 問2 l = [1,3,2,1,6,4,2,98,82] l2 =[] l3 = [] for x in l:if x not in l2:l2.append(x)if l.count(x) == 2 and x not in l3:l3.append(x) print("L2 =",l2) print("L3 =",l3)
題例21
# 3. 生成前40個斐波那契數(Fibonacci) # 1 1 2 3 5 8 13 21 # 要求: 將這些數保存在列表中,最后打印這些數 # 注: 斐波那契數的前2個數為1 和 1 ,從第二個數起為前兩個數相加之和# 方法1: l = [] a = 0 # a 表示第一個數的前一個數 b = 1 # b 表示第一個數 while len(l)<40:# 每次把b加入到列表中l.append(b)# 在算出下一個fibonacci數,存于b中c = a+b #算數下一個數a = b # 把當前作為前一個數b = c # 把新算出來的c交給b print(l) print(len(l))# 方法2 l=[1,1] while len(l) < 40:# 每次生成,加進列表上l.append(l[-1]+l[-2]) print(l) print(len(l))
題例22
# 1.思考下面的程序的執行結果是什么?為什么? L = list(range(10)) for x in L:L.remove(x)print("L= ",L) # 請問是空列表么?# 2.輸入一些單詞和解釋,將單詞作為鍵,將解釋作為值,存入字典中,當輸入單詞或解釋為空是停止輸入,并打印這個字典 # 然后,輸入查詢的單詞,給出單詞的內容,如果單詞不存在則提示: # 查無此詞 d = {} # 創建一個空字典準備存儲數據 while True:a = input("請輸入單詞:")if not a: # 如果a空字符串,則退出breakb = input("請輸入解釋:")if not b:breakd[a] = b# 走到此處,說明a ,b都綁定了正確訂值 print(d) print("-------------以下開始查詢單詞---------------") while True:c = input("請輸入查詢單詞:")if not c:breakif c in d:print(d[c])else:print("查無單詞")
題例23
# 3.<<學生信息管理項目>> # 輸入任意個學生的姓名,年齡,成績,每個學生的信息存入字典,然后放入列表中,每個學生的信息需要手動輸入,當輸入姓名為空時 # 結束輸入 # 如: # 請輸入姓名:tarena # 請輸入年齡:20 # 請輸入成績:99 # 請輸入姓名:name2 # 請輸入年齡:18 # 請輸入成績:88 # 請輸入姓名:<回車> 結束輸入 # 內部存儲格式如下: # [{"name":"tarena","age":20,"score":99} # {"name":"tame","age":18,"score":88}] # 打印上述此列表 # 然后再用表格的形式打印學生信息如下: # +-------------+---------+--------+ # | 姓名 | 年齡 | 成績 | # +-------------+---------+--------+ # | tarena | 20 | 99 | # +-------------+---------+--------+ # | name2 | 18 | 88 | # +-------------+---------+--------+ l = [] #創建一個列表,準備存放學生數據訂字典 while True:a = input("請輸入名字:")if not a: #如果用戶輸入字符串就結束輸入breakb = int(input("請輸入年齡:"))c = int(input("請輸入成績:"))t = {} # 一定要每次創建一個新的字典# t["名字:"],t["年齡:"],t["成績:"] = (a,b,c)t["name"] = at["age"] = bt["score"] = cl.append(t) #把生成的字典放在列表中 print(l) print("+ "+"-"*30 +" +") print("|"+"姓名".center(8)+"|"+"年齡".center(8)+"|"+"成績".center(8)+"|") print("+ "+"-"*30 +" +") for i in l:sa = i["name"].center(10)sb = str(i["age"]).center(10)sc = str(i["score"]).center(10)print("|"+sa+"|"+sb+"|"+sc+"|") print("+ "+"-"*30+" +")
題例24
# 1.定義兩個函數: # sum3(a,b,c) 用于返回三個數的和 # pow3(x) 用于返回x的三次方(立方) # 用以上函數的計算: # 1.計算1的立方 + 2的立方+3的立方的和 # 2.計算 1 + 2 +3 的和的立方 # 即: # 1**3+2**3+3**3 和 (1+2+3)**3def sum3(a,b,c):x = a + b+creturn x def pow3(x):d = x**3return d printsun = sum3(pow3(1),pow3(2),pow3(3)) print(printsun) print(pow3(sum3(1,2,3)))
題例25
# 2.寫一個函數 get_chinese_char_count(s),此函數功能是給定一個字符串是s,返回這個字符串中中文字符的個數 # 注:中文的編碼范圍是:0x4E00~0x9FA5def get_chinese_char_count(a):i = 0for x in a:if 0x4E00<=ord(x)<=0x9FA5:i+=1return i s = input("請輸入中英文混合的字符串:") print("中文字符的個數是:",get_chinese_char_count(s))
題例26
# 3.改寫之前的學生信息管理程序: # 用兩個函數來封裝的代碼塊 # 函數1:input_student() # 返回學生信息字典的列表 # 函數2:output_student() #打印學生信息的表格# def input_student(): # ...此處自己實現 # def output_student(L): # ...此處自己實現
infos = input_student() print(infos) # 打印列表[{...},{...}] output_student(infos) # 根據實參infos打印表格def input_student(): # 打印死循環鍵盤輸出,存入字典,放在列表l = [] #創建一個列表,準備存放學生數據訂字典while True:a = input("請輸入名字:")if not a: #如果用戶輸入字符串就結束輸入breakb = int(input("請輸入年齡:"))c = int(input("請輸入成績:"))t = {}#一定要每次創建一個新的字典t["名字:"],t["年齡:"],t["成績:"] = (a,b,c)l.append(t) # 把字典放在列表print(l)return l
def output_student(l): # 打印表格以及輸出print("+ "+"-"*30 +" +")print("|"+"姓名".center(8)+"|"+"年齡".center(8)+"|"+"成績".center(8)+"|")print("+ "+"-"*30 +" +")for i in l:x = get_chinese_char_count(i["名字:"])sa = i["名字:"].center(10-x)sb = str(i["年齡:"]).center(10) #轉字符串sc = str(i["成績:"]).center(10) #轉字符串print("|"+sa+"|"+sb+"|"+sc+"|")print("+ "+"-"*30+" +")def get_chinese_char_count(s): # 計算中文輸入的長度i = 0for x in s:if 0x4E00<=ord(x)<=0x9FA5:i+=1return i# 改變量 infos = input_student() #把字典定義個變量 output_student(infos) #表格調用字典
題例27
# 1.算出100~999 以內的水仙花數(Narcissistic number)水仙花數是指百尾3次方加上十位的三次方加上各位的3次方 # 等于原數的整數 # 例如: 153 = 1**3 + 5**3 + 3**3 # 答案: 153,370,...# 方法1 for x in range(100,1000):# 拆出百位,十位,個位bai = x // 100 #百位shi = x // 10 % 10 #十位ge = x % 10 #個位if ge ** 3+ shi ** 3 +bai ** 3 == x:print(x)#滿足條件的水仙花數# 方法2 # 將數字轉為字符串 for x in range(100,1000):s = str(x)bai = int(s[0])shi = int(s[1])ge = int(s[2])if x == bai ** 3 + shi ** 3 +ge ** 3:print(x)# 方法3 for bai in range(1,10):for shi in range(0,10):for ge in range(10):x = bai * 100 + shi *10 +geif x ==bai ** 3 + shi ** 3 +ge ** 3:print(x)
題例28
# 2.完全數: # 1+2+3=6(6為完全數) # 1,2,3都為6的因數(能被一個數x整除的數為y,則y為x的因數) # 1 x 6 = 6 # 2 x 3 = 6 # 完全數是指除自身以外的所有因數之和相加等于自身的數 # 求4~5個完全數,并打印 # 答案: # 6 # 28 D # 496 # ...def is_perfect_number(x):# """此函數判斷x是否為完全數,如果是返回True,否則返回False"""l = [] #創建一個列表,用來存放x所有的因數for i in range(1,x):if x % i ==0: #整數了,i則一定是x的因數 l.append(i)if sum(l)==x: # 是完全數return Truereturn Falsedef main():i = 2while True:# 如果i是完全數,則打印i的值if is_perfect_number(i):print(i)i+=1main()
題例29
# 3.寫一個myrange()函數,參數可以傳1~3個,實際意義同range函數規則相同,此函數返回符合range(...)函數規則的列表 # 如: # L = myrange(4) # print(L) # [0,1,2,3] # L = myrange(4,6) # print(L) #[4,5] # L = myrange(1,10,3) # print(L) #[1,4,7]def myrange(start,stop=None,step=None):if stop is None: # if not stop:stop = startstart = 0if step is None:step = 1# 開始,結束和步長都已確定# seturn [x for x in range (start,stop,step)]if step > 0: # 正向l = []while start < stop:l.append(start)start += stepreturn lelif step < 0: # 反向l =[]while start > stop:l.append(start)start += stepreturn ll = myrange(4) print(l) l =myrange(4,6) print(l) l = myrange(1,10,3) print(l) l = myrange(10,1,-2) print(l)
題例30
# 1. 寫一個函數mysum(n),此函數用來計算 # 1+2+3+4+....+n 的和 # (要求:不布允許調用sum) # 如: # print(mysum(100)) #5050 # print(mysum(4))#10def mysum1(n):s = 0for x in range(1,n+1):s = s+xreturn s print(mysum1(100)) print(mysum1(4))def mysum2(n):return sum(range(1,n+1)) print(mysum2(100)) print(mysum2(4))
題例31
# 2.寫一個函數myfac(n) 來計算n!(n的階乘) # n!=1*2*3*4*...*n # 如: # print(myfac([5])) #120# 3.寫一個函數計算 # 1+ 2**2 + 3**3 + 4**4...+n**n的和 # (n給個小點數來進行測試) # 1+ 2**2 + 3**3 +...+ n**n的和 # 方法1 def mysum(n):s = 0for x in range(1,n+1):s = s + x**xreturn s print(mysum(3))# 方法2 def mysum(n):s = sum([x**x for x in range(1,n+1)])return s print(mysum(3))# 方法3 def mysum(n):return sum(map(lambda x:x**x,range(1,n+1))) print(mysum(3))
題例32
# 1.編寫函數fun,其功能是計算并返回下列多項式的和 # Sn = 1 + 1/1! + 1/2! + 1/3! + ... 1/n! # (建議用數學模塊中的math.factorial(x)函數) # 求當 n = 20時,Sn的值# 方法1 def fum(n):from math import factorial as facs = 0for x in range(0,n+1):s = s + 1/(fac(x))return s print(fum(20))# 方法2 def fum(n):from math import factorial as facreturn sum([1/fac(x) for x in range(n+1)]) print(fum(20))# 方法3 def fum(n):from math import factorial as facreturn sum(map(lambda x: 1/fac(x),range(n+1))) print(fum(20))
題例33
# 2.寫一個程序,以電子時鐘格式打印時間: # 格式為: # HH:MM:SS# 2.寫一個程序,以電子時鐘格式打印時間: def show_time():import timewhile True:n = time.time()s = time.localtime(n)# t = s[3],s[4],s[5]# print("%02d:%02d:%02d" % t,end="\r")print("%02d:%02d:%02d" % s[3:6],end="\r")time.sleep(1) show_time()
題例34
# 3.編寫一個鬧鐘程序,啟動時設置定時時間,到時間后打印一句“時間到!”然后程序退出! a = int(input("請輸入小時:")) b = int(input("請輸入分鐘:")) c = int(input("請輸入分秒:")) import time while True:n = time.time()s = time.localtime(n)if s[3] ==a and s[4]==b and s[5]==c:print("時間到!")breakelse:print("%02d:%02d:%02d" % (s[3:6]),end="\r")time.sleep(1)def alarm(hour,minute):import timewhile True:t = time.localtime() #獲取當前時間print("%02d:%02d:%02d" % (t[3:6]),end="\r")time.sleep(0.1)# if t[3] == hour and t[4] == minute:if t[3:5] == (hour,minute):print("時間到!!!")returna = int(input("請輸入小時:")) b = int(input("請輸入分鐘:")) alarm(a,b)
題例35
# 1. 隨機生成6位密碼: # 可以作為密碼的字符有: # a-z,A-Z,0-9 # 隨機生成一個6位的密碼# 方法1 import random as r cord = ("qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789") for s in range(0,6):d = r.randint(0,len(cord)-1)c = cord[d]print(c,end="") print()# 方法2 import random char = [chr(x) for x in range(65,65+26)] char += [chr(x) for x in range(97,97+26)] char += [str(x) for x in range(10)] passwd =" " for d in range(6):passwd += random.choice(char) print(passwd)
題例36
# 2. 模擬斗地主發牌,牌共54張 # 種類: # 黑桃("\u2660"),梅花("\u2663"),方塊("\u2665"),紅桃("\u2666") # 數字: # A2-10JQK # 三牌:大小王 # 三個,每人發17張牌,底牌留三張 # 輸入回車,打印第一個人的17張牌 # 輸入回車,打印第二個人的17張牌 # 輸入回車,打印第三個人的17張牌 # 輸入回車,打印3張底牌print("歡迎來到發牌程序") import random import time r = ["大王","小王"] #容器 pai = ["A","J","Q","K"] shu = ["\u2660","\u2663","\u2665","\u2666"] for x in range(2,10+1):r.append(shu[0]+str(x))r.append(shu[1]+str(x)) r.append(shu[2]+str(x))r.append(shu[3]+str(x)) for y in range(1,4+1):r.append(shu[0]+pai[0])r.append(shu[1]+pai[1])r.append(shu[2]+pai[2])r.append(shu[3]+pai[3]) time.sleep(1) print(r)print("--------------------------------------------------") random.shuffle(r) s1 = r[0:17] s2 = r[17:34] s3 = r[34:51] s4 = r[51:]input("第一個人牌") print(s1) input("第二個人牌") print(s2) input("第三個人牌") print(s3) input("底牌") print(s4)# 方法2 poke = ["大王","小王"] kinds = ["\u2660","\u2663","\u2665","\u2666"] numbers =["A"] numbers += [str(x)for x in range(2,11)] numbers += list("JQK") # for k in kinds: # for n in numbers: # poke.append(k+n) poke += [k+n for k in kinds for n in numbers] print(poke) assert len(poke)==54,"出錯" # 打亂 poke2 = poke.copy() import random random.shuffle(poke2) player1 = poke2[:17] player2 = poke2[17:34] player3 = poke2[34:51] base = poke2[51:]input() print("打印第一個人的17張牌:",player1) input() print("打印第二個人的17張牌:",player2) input() print("打印第三個人的17張牌:",player3) input() print("三張底牌:",base)
題例37
# 1. 一個球從100米高空落下,每次落地后反彈高度為原高度的一半,再落下,寫程序算出: # 1) 皮球在第10次落地后反彈的高度 # 2) 皮球在第10次落地反彈后共經歷多少米路程 s = 100 lucheng = 0 for x in range(10):s = s / 2 lucheng = lucheng + (s+s/2)*2 print(s) print(lucheng)def get_last_height(height,times):"""height 原來的高度times 為反彈次數"""for _ in range(times):height /= 2 # 每次反彈高度為原高度的一半return height print("皮球從100米高度落下反彈十次后高度為:",get_last_height(100,10))def get_distance(height,times):meter = 0 # 用來記錄總路程for _ in range(times):# 累加下落過程的路程meter += heightheight /=2 # 計算返回后的高度# 累加反彈之后的路程meter += heightreturn meter print("皮球從100米高度落下反彈十次后的總路程為:",get_distance(100,10))
題例38
# 2.分解質因數,輸入一個正整數,分解質因數 # 如: # 輸入: 90 # 打印: # 90 = 2 * 3 * 3 * 5 # (質因數是指最小能被原數整數的素數(不包括1))print("----------"*10)
# 方法1 s = int(input("請輸入一個整數:")) n=s if s ==2:print(s) else:l = []while True:for x in range(2,s+1):if s % x==0:s = s // xl.append(str(x))breakif s==1:break a=" * ".join(l) print(n,"=",a)
# 方法2(封裝) def get_zhiyin_list(x):"""此函數返回x的質因數的列表如x = 90返回[2,3,3,5]"""l =[] #準備存放質因數while x > 1:# 每次求取一個質因數,然后放在l中for i in range(2,x+1):if x % i ==0: # i一定質因數 l.append(i)x = int(x/i)break # 進入下一次whilereturn lx = int(input("請輸入正整數:")) l = get_zhiyin_list(x) l2 = (str(x)for x in l) print(x,"=","*".join(l2))