python 经典100例 (61-80)
生活随笔
收集整理的這篇文章主要介紹了
python 经典100例 (61-80)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
python 經典100例(61-80)
''' 【程序61】 題目:打印出楊輝三角形(要求打印出10行如下圖) 1.程序分析: ''' if __name__ == '__main__': a = [] for i in range(10): a.append([]) for j in range(10): a[i].append(0) for i in range(10): a[i][0] = 1 a[i][i] = 1 for i in range(2,10): for j in range(1,i): a[i][j] = a[i - 1][j-1] + a[i - 1][j] from sys import stdout for i in range(10): for j in range(i + 1): stdout.write(a[i][j]) stdout.write(' ') print ''' 【程序62】 題目:查找字符串?! ?/span> 程序分析:無。 程序源代碼: #!/usr/bin/python # -*- coding: UTF-8 -*- sStr1 = 'abcdefg' sStr2 = 'cde' print sStr1.find(sStr2) ''' 【63】題目:畫橢圓ellipse 1.程序分析: 2.程序源代碼: ''' if __name__ == '__main__': from Tkinter import * x = 360 y = 160 top = y - 30 bottom = y - 30 canvas = Canvas(width = 400,height = 600,bg = 'white') for i in range(20): canvas.create_oval(250 - top,250 - bottom,250 + top,250 + bottom) top -= 5 bottom += 5 canvas.pack() mainloop() ''' 【64】題目:利用ellipse and rectangle 畫圖。 1.程序分析: 2.程序源代碼: ''' if __name__ == '__main__': from Tkinter import * canvas = Canvas(width = 400,height = 600,bg = 'white') left = 20 right = 50 top = 50 num = 15 for i in range(num): canvas.create_oval(250 - right,250 - left,250 + right,250 + left) canvas.create_oval(250 - 20,250 - top,250 + 20,250 + top) canvas.create_rectangle(20 - 2 * i,20 - 2 * i,10 * (i + 2),10 * ( i + 2)) right += 5 left += 5 top += 10 canvas.pack() mainloop() ''' 【程序65】 題目:一個最優美的圖案?! ?/span> 1.程序分析: 2.程序源代碼: ''' import math class PTS: def __init__(self): self.x = 0 self.y = 0 points = [] def LineToDemo(): from Tkinter import * screenx = 400 screeny = 400 canvas = Canvas(width = screenx,height = screeny,bg = 'white') AspectRatio = 0.85 MAXPTS = 15 h = screeny w = screenx xcenter = w / 2 ycenter = h / 2 radius = (h - 30) / (AspectRatio * 2) - 20 step = 360 / MAXPTS angle = 0.0 for i in range(MAXPTS): rads = angle * math.pi / 180.0 p = PTS() p.x = xcenter + int(math.cos(rads) * radius) p.y = ycenter - int(math.sin(rads) * radius * AspectRatio) angle += step points.append(p) canvas.create_oval(xcenter - radius,ycenter - radius, xcenter + radius,ycenter + radius) for i in range(MAXPTS): for j in range(i,MAXPTS): canvas.create_line(points[i].x,points[i].y,points[j].x,points[j].y) canvas.pack() mainloop() if __name__ == '__main__': LineToDemo() ''' 【程序66】 題目:輸入3個數a,b,c,按大小順序輸出。 1.程序分析:利用指針方法。 2.程序源代碼: ''' if __name__ == '__main__': n1 = int(raw_input('n1 = :\n')) n2 = int(raw_input('n2 = :\n')) n3 = int(raw_input('n3 = :\n')) def swap(p1,p2): return p2,p1 if n1 > n2 : n1,n2 = swap(n1,n2) if n1 > n3 : n1,n3 = swap(n1,n3) if n2 > n3 : n2,n3 = swap(n2,n3) print n1,n2,n3 ''' 【67】題目:輸入數組,最大的與第一個元素交換,最小的與最后一個元素交換,輸出數組。 1.程序分析:無 2.程序源代碼: ''' def inp(numbers): for i in range(9): numbers.append(int(raw_input('input a number:\n'))) numbers.append(int(raw_input('input a number:\n'))) p = 0 def max_min(array): max = min = 0 for i in range(1,len(array) - 1): p = i if array[p] > array[max] : max = p elif array[p] < array[min] : min = p k = max l = min array[0],array[l] = array[l],array[0] array[9],array[k] = array[k],array[9] def outp(numbers): for i? in range(len(numbers)): print numbers[i] if __name__ == '__main__': array = [] inp(array) max_min(array) outp(array) ''' 【程序68】 題目:有n個整數,使其前面各數順序向后移m個位置,最后m個數變成最前面的m個數 1.程序分析: 2.程序源代碼: ''' if __name__ == '__main__': n = int(raw_input('the total number is:\n')) m = int(raw_input('back m:\n')) def move(array,n,m): array_end = array[n - 1] for i in range(n - 1,-1,- 1): array[i] = array[i - 1] array[0] = array_end m -= 1 if m > 0:move(array,n,m) number = [] for i in range(n): number.append(int(raw_input('input a number:\n'))) print 'orignal number:',number move(number,n,m) print 'after moved:',number ''' 【程序69】 題目:有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出 圈子,問最后留下的是原來第幾號的那位。 1. 程序分析: 2.程序源代碼: ''' if __name__ == '__main__': nmax = 50 n = int(raw_input('please input the total of numbers:')) num = [] for i in range(n): num.append(i + 1) i = 0 k = 0 m = 0 while m < n - 1: if num[i] != 0 : k += 1 if k == 3: num[i] = 0 k = 0 m += 0 i += 1 if i == n : i = 0 i = 0 while num[i] == 0: i += 1 print num[i] ''' 【70】題目:寫一個函數,求一個字符串的長度,在main函數中輸入字符串,并輸出其長度。 1.程序分析: 2.程序源代碼 就這樣吧 ''' if __name__ == '__main__': ??? s = raw_input('please input a string:\n') ??? print 'the string has %d characters.' % len(s) ''' 【程序71】 題目:編寫input()和output()函數輸入,輸出5個學生的數據記錄。 1.程序分析: 2.程序源代碼: 使用list來模擬結構(不使用class) stu = [string,string,list] ''' N = 3 #stu # num : string # name : string # score[4]: list student = [] for i in range(5): student.append(['','',[]]) def input_stu(stu): for i in range(N): stu[i][0] = raw_input('input student num:\n') stu[i][1] = raw_input('input student name:\n') for j in range(3): stu[i][2].append(int(raw_input('score:\n'))) def output_stu(stu): for i in range(N): print '%-6s%-10s' % ( stu[i][0],stu[i][1] ) for j in range(3): print '%-8d' % stu[i][2][j] if __name__ == '__main__': input_stu(student) print student output_stu(student) ''' 【程序72】 題目:創建一個鏈表。 1.程序分析: 2.程序源代碼: ''' if __name__ == '__main__': ??? ptr = [] ??? for i in range(5): ??????? num = int(raw_input('please input a number:\n')) ??????? ptr.append(num) ??? print ptr ''' 【73】題目:反向輸出一個鏈表。 1.程序分析: 2.程序源代碼: ''' if __name__ == '__main__': ??? ptr = [] ??? for i in range(5): ??????? num = int(raw_input('please input a number:\n')) ??????? ptr.append(num) ??? print ptr ??? ptr.reverse() ??? print ptr ''' 【程序74】 題目:列表排序及連接。 程序分析:排序可使用 sort() 方法,連接可以使用 + 號或 extend() 方法。 程序源代碼: 實例 #!/usr/bin/python # -*- coding: UTF-8 -*- if __name__ == '__main__': ??? a = [1,3,2] ??? b = [3,4,5] ??? a.sort()???? # 對列表 a 進行排序 ??? print a ? ??? # 連接列表 a 與 b ??? print a+b ??? ??? # 連接列表 a 與 b ??? a.extend(b) ??? print a ''' 【程序75】 題目:放松一下,算一道簡單的題目。 1.程序分析: 2.程序源代碼:67 ''' if __name__ == '__main__': for i in range(5): n = 0 if i != 1: n += 1 if i == 3: n += 1 if i == 4: n += 1 if i != 4: n += 1 if n == 3: print 64 + i ''' 【程序76】 題目:編寫一個函數,輸入n為偶數時,調用函數求1/2+1/4+...+1/n,當輸入n為奇數時,調用函數 1/1+1/3+...+1/n(利用指針函數) 1.程序分析: 2.程序源代碼: ''' def peven(n): i = 0 s = 0.0 for i in range(2,n + 1,2): s += 1.0 / i return s def podd(n): s = 0.0 for i in range(1, n + 1,2): s += 1 / i return s def dcall(fp,n): s = fp(n) return s if __name__ == '__main__': n = int(raw_input('input a number:\n')) if n % 2 == 0: sum = dcall(peven,n) else: sum = dcall(podd,n) print sum ''' 【程序77】 題目:填空練習(指向指針的指針)循環輸出列表 1.程序分析: 2.程序源代碼: ''' if __name__ == '__main__': s = ["man","woman","girl","boy","sister"] for i in range(len(s)): print s[i] ''' 【程序78】 題目:找到年齡最大的人,并輸出。請找出程序中有什么問題。 1.程序分析: 2.程序源代碼 ''' if __name__ == '__main__': person = {"li":18,"wang":50,"zhang":20,"sun":22} m = 'li' for key in person.keys(): if person[m] < person[key]: m = key print '%s,%d' % (m,person[m]) ''' 【程序79】 題目:字符串排序。 1.程序分析: 2.程序源代碼: ''' if __name__ == '__main__': str1 = raw_input('input string:\n') str2 = raw_input('input string:\n') str3 = raw_input('input string:\n') print str1,str2,str3 if str1 > str2 : str1,str2 = str2,str1 if str1 > str3 : str1,str3 = str3,str1 if str2 > str3 : str2,str3 = str3,str2 print 'after being sorted.' print str1,str2,str3 if __name__=='__main__': list1=[] str1=raw_input('請輸入第一個字符串:') str2=raw_input('請輸入第二個字符串:') str3=raw_input('請輸入第三個字符串:') list1.extend([str1,str2,str3]) list2=sorted(list1) print '排序后的字符串為:' for item in list2: print item ''' 【程序80】 題目:海灘上有一堆桃子,五只猴子來分。第一只猴子把這堆桃子憑據分為五份,多了一個,這只 猴子把多的一個扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了 一個,它同樣把多的一個扔入海中,拿走了一份,第三、第四、第五只猴子都是這樣做的, 問海灘上原來最少有多少個桃子? 1.程序分析: 2.程序源代碼: ''' if __name__ == '__main__': for i in range(4,10000,4): count = 0 m = i for k in range(5): j = i / 4 * 5 + 1 i = j if j % 4 == 0: count += 1 else: break i = m if count == 4: print count break # 猴子分桃,最少問題分析:問最少有多少只桃子,則岸上最后剩的桃子數目越小,則原岸上的桃子越少 # 假設最后岸上還剩4x只桃子,可以利用遞歸方法求解 num=int(input("輸入猴子的數目:")) def fn(n): if n==num: return(4*x)?????? #最后剩的桃子的數目 else: return(fn(n+1)*5/4+1) x=1 while 1: count=0 for i in range(1,num): if fn(i)%4==0 : count=count+1 if count==num-1: print("海灘上原來最少有%d個桃子" % int(fn(0))) break else:
''' 【程序61】 題目:打印出楊輝三角形(要求打印出10行如下圖) 1.程序分析: ''' if __name__ == '__main__': a = [] for i in range(10): a.append([]) for j in range(10): a[i].append(0) for i in range(10): a[i][0] = 1 a[i][i] = 1 for i in range(2,10): for j in range(1,i): a[i][j] = a[i - 1][j-1] + a[i - 1][j] from sys import stdout for i in range(10): for j in range(i + 1): stdout.write(a[i][j]) stdout.write(' ') print ''' 【程序62】 題目:查找字符串?! ?/span> 程序分析:無。 程序源代碼: #!/usr/bin/python # -*- coding: UTF-8 -*- sStr1 = 'abcdefg' sStr2 = 'cde' print sStr1.find(sStr2) ''' 【63】題目:畫橢圓ellipse 1.程序分析: 2.程序源代碼: ''' if __name__ == '__main__': from Tkinter import * x = 360 y = 160 top = y - 30 bottom = y - 30 canvas = Canvas(width = 400,height = 600,bg = 'white') for i in range(20): canvas.create_oval(250 - top,250 - bottom,250 + top,250 + bottom) top -= 5 bottom += 5 canvas.pack() mainloop() ''' 【64】題目:利用ellipse and rectangle 畫圖。 1.程序分析: 2.程序源代碼: ''' if __name__ == '__main__': from Tkinter import * canvas = Canvas(width = 400,height = 600,bg = 'white') left = 20 right = 50 top = 50 num = 15 for i in range(num): canvas.create_oval(250 - right,250 - left,250 + right,250 + left) canvas.create_oval(250 - 20,250 - top,250 + 20,250 + top) canvas.create_rectangle(20 - 2 * i,20 - 2 * i,10 * (i + 2),10 * ( i + 2)) right += 5 left += 5 top += 10 canvas.pack() mainloop() ''' 【程序65】 題目:一個最優美的圖案?! ?/span> 1.程序分析: 2.程序源代碼: ''' import math class PTS: def __init__(self): self.x = 0 self.y = 0 points = [] def LineToDemo(): from Tkinter import * screenx = 400 screeny = 400 canvas = Canvas(width = screenx,height = screeny,bg = 'white') AspectRatio = 0.85 MAXPTS = 15 h = screeny w = screenx xcenter = w / 2 ycenter = h / 2 radius = (h - 30) / (AspectRatio * 2) - 20 step = 360 / MAXPTS angle = 0.0 for i in range(MAXPTS): rads = angle * math.pi / 180.0 p = PTS() p.x = xcenter + int(math.cos(rads) * radius) p.y = ycenter - int(math.sin(rads) * radius * AspectRatio) angle += step points.append(p) canvas.create_oval(xcenter - radius,ycenter - radius, xcenter + radius,ycenter + radius) for i in range(MAXPTS): for j in range(i,MAXPTS): canvas.create_line(points[i].x,points[i].y,points[j].x,points[j].y) canvas.pack() mainloop() if __name__ == '__main__': LineToDemo() ''' 【程序66】 題目:輸入3個數a,b,c,按大小順序輸出。 1.程序分析:利用指針方法。 2.程序源代碼: ''' if __name__ == '__main__': n1 = int(raw_input('n1 = :\n')) n2 = int(raw_input('n2 = :\n')) n3 = int(raw_input('n3 = :\n')) def swap(p1,p2): return p2,p1 if n1 > n2 : n1,n2 = swap(n1,n2) if n1 > n3 : n1,n3 = swap(n1,n3) if n2 > n3 : n2,n3 = swap(n2,n3) print n1,n2,n3 ''' 【67】題目:輸入數組,最大的與第一個元素交換,最小的與最后一個元素交換,輸出數組。 1.程序分析:無 2.程序源代碼: ''' def inp(numbers): for i in range(9): numbers.append(int(raw_input('input a number:\n'))) numbers.append(int(raw_input('input a number:\n'))) p = 0 def max_min(array): max = min = 0 for i in range(1,len(array) - 1): p = i if array[p] > array[max] : max = p elif array[p] < array[min] : min = p k = max l = min array[0],array[l] = array[l],array[0] array[9],array[k] = array[k],array[9] def outp(numbers): for i? in range(len(numbers)): print numbers[i] if __name__ == '__main__': array = [] inp(array) max_min(array) outp(array) ''' 【程序68】 題目:有n個整數,使其前面各數順序向后移m個位置,最后m個數變成最前面的m個數 1.程序分析: 2.程序源代碼: ''' if __name__ == '__main__': n = int(raw_input('the total number is:\n')) m = int(raw_input('back m:\n')) def move(array,n,m): array_end = array[n - 1] for i in range(n - 1,-1,- 1): array[i] = array[i - 1] array[0] = array_end m -= 1 if m > 0:move(array,n,m) number = [] for i in range(n): number.append(int(raw_input('input a number:\n'))) print 'orignal number:',number move(number,n,m) print 'after moved:',number ''' 【程序69】 題目:有n個人圍成一圈,順序排號。從第一個人開始報數(從1到3報數),凡報到3的人退出 圈子,問最后留下的是原來第幾號的那位。 1. 程序分析: 2.程序源代碼: ''' if __name__ == '__main__': nmax = 50 n = int(raw_input('please input the total of numbers:')) num = [] for i in range(n): num.append(i + 1) i = 0 k = 0 m = 0 while m < n - 1: if num[i] != 0 : k += 1 if k == 3: num[i] = 0 k = 0 m += 0 i += 1 if i == n : i = 0 i = 0 while num[i] == 0: i += 1 print num[i] ''' 【70】題目:寫一個函數,求一個字符串的長度,在main函數中輸入字符串,并輸出其長度。 1.程序分析: 2.程序源代碼 就這樣吧 ''' if __name__ == '__main__': ??? s = raw_input('please input a string:\n') ??? print 'the string has %d characters.' % len(s) ''' 【程序71】 題目:編寫input()和output()函數輸入,輸出5個學生的數據記錄。 1.程序分析: 2.程序源代碼: 使用list來模擬結構(不使用class) stu = [string,string,list] ''' N = 3 #stu # num : string # name : string # score[4]: list student = [] for i in range(5): student.append(['','',[]]) def input_stu(stu): for i in range(N): stu[i][0] = raw_input('input student num:\n') stu[i][1] = raw_input('input student name:\n') for j in range(3): stu[i][2].append(int(raw_input('score:\n'))) def output_stu(stu): for i in range(N): print '%-6s%-10s' % ( stu[i][0],stu[i][1] ) for j in range(3): print '%-8d' % stu[i][2][j] if __name__ == '__main__': input_stu(student) print student output_stu(student) ''' 【程序72】 題目:創建一個鏈表。 1.程序分析: 2.程序源代碼: ''' if __name__ == '__main__': ??? ptr = [] ??? for i in range(5): ??????? num = int(raw_input('please input a number:\n')) ??????? ptr.append(num) ??? print ptr ''' 【73】題目:反向輸出一個鏈表。 1.程序分析: 2.程序源代碼: ''' if __name__ == '__main__': ??? ptr = [] ??? for i in range(5): ??????? num = int(raw_input('please input a number:\n')) ??????? ptr.append(num) ??? print ptr ??? ptr.reverse() ??? print ptr ''' 【程序74】 題目:列表排序及連接。 程序分析:排序可使用 sort() 方法,連接可以使用 + 號或 extend() 方法。 程序源代碼: 實例 #!/usr/bin/python # -*- coding: UTF-8 -*- if __name__ == '__main__': ??? a = [1,3,2] ??? b = [3,4,5] ??? a.sort()???? # 對列表 a 進行排序 ??? print a ? ??? # 連接列表 a 與 b ??? print a+b ??? ??? # 連接列表 a 與 b ??? a.extend(b) ??? print a ''' 【程序75】 題目:放松一下,算一道簡單的題目。 1.程序分析: 2.程序源代碼:67 ''' if __name__ == '__main__': for i in range(5): n = 0 if i != 1: n += 1 if i == 3: n += 1 if i == 4: n += 1 if i != 4: n += 1 if n == 3: print 64 + i ''' 【程序76】 題目:編寫一個函數,輸入n為偶數時,調用函數求1/2+1/4+...+1/n,當輸入n為奇數時,調用函數 1/1+1/3+...+1/n(利用指針函數) 1.程序分析: 2.程序源代碼: ''' def peven(n): i = 0 s = 0.0 for i in range(2,n + 1,2): s += 1.0 / i return s def podd(n): s = 0.0 for i in range(1, n + 1,2): s += 1 / i return s def dcall(fp,n): s = fp(n) return s if __name__ == '__main__': n = int(raw_input('input a number:\n')) if n % 2 == 0: sum = dcall(peven,n) else: sum = dcall(podd,n) print sum ''' 【程序77】 題目:填空練習(指向指針的指針)循環輸出列表 1.程序分析: 2.程序源代碼: ''' if __name__ == '__main__': s = ["man","woman","girl","boy","sister"] for i in range(len(s)): print s[i] ''' 【程序78】 題目:找到年齡最大的人,并輸出。請找出程序中有什么問題。 1.程序分析: 2.程序源代碼 ''' if __name__ == '__main__': person = {"li":18,"wang":50,"zhang":20,"sun":22} m = 'li' for key in person.keys(): if person[m] < person[key]: m = key print '%s,%d' % (m,person[m]) ''' 【程序79】 題目:字符串排序。 1.程序分析: 2.程序源代碼: ''' if __name__ == '__main__': str1 = raw_input('input string:\n') str2 = raw_input('input string:\n') str3 = raw_input('input string:\n') print str1,str2,str3 if str1 > str2 : str1,str2 = str2,str1 if str1 > str3 : str1,str3 = str3,str1 if str2 > str3 : str2,str3 = str3,str2 print 'after being sorted.' print str1,str2,str3 if __name__=='__main__': list1=[] str1=raw_input('請輸入第一個字符串:') str2=raw_input('請輸入第二個字符串:') str3=raw_input('請輸入第三個字符串:') list1.extend([str1,str2,str3]) list2=sorted(list1) print '排序后的字符串為:' for item in list2: print item ''' 【程序80】 題目:海灘上有一堆桃子,五只猴子來分。第一只猴子把這堆桃子憑據分為五份,多了一個,這只 猴子把多的一個扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了 一個,它同樣把多的一個扔入海中,拿走了一份,第三、第四、第五只猴子都是這樣做的, 問海灘上原來最少有多少個桃子? 1.程序分析: 2.程序源代碼: ''' if __name__ == '__main__': for i in range(4,10000,4): count = 0 m = i for k in range(5): j = i / 4 * 5 + 1 i = j if j % 4 == 0: count += 1 else: break i = m if count == 4: print count break # 猴子分桃,最少問題分析:問最少有多少只桃子,則岸上最后剩的桃子數目越小,則原岸上的桃子越少 # 假設最后岸上還剩4x只桃子,可以利用遞歸方法求解 num=int(input("輸入猴子的數目:")) def fn(n): if n==num: return(4*x)?????? #最后剩的桃子的數目 else: return(fn(n+1)*5/4+1) x=1 while 1: count=0 for i in range(1,num): if fn(i)%4==0 : count=count+1 if count==num-1: print("海灘上原來最少有%d個桃子" % int(fn(0))) break else:
總結
以上是生活随笔為你收集整理的python 经典100例 (61-80)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux内核分成如下五个子系统,lin
- 下一篇: 机器学习简介及学习思维导图