├── 100examples ├── 001.py ├── 002.py ├── 003.py ├── 004.py ├── 005.py ├── 006.py ├── 007.py ├── 008.py ├── 009.py ├── 010.py ├── 011.py ├── 012.py ├── 013.py ├── 014.py ├── 015.py ├── 016.py ├── 017.py ├── 018.py ├── 019.py ├── 020.py ├── 021.py ├── 022.py ├── 023.py ├── 024.py ├── 025.py ├── 026.py ├── 027.py ├── 028.py ├── 029.py ├── 030.py ├── 031.py ├── 032.py ├── 033.py ├── 034.py ├── 035.py ├── 036.py ├── 037.py ├── 038.py ├── 039.py ├── 040.py ├── 041.py ├── 042.py ├── 043.py ├── 044.py ├── 045.py ├── 046.py ├── 047.py ├── 048.py ├── 049.py ├── 050.py ├── 051.py ├── 052.py ├── 053.py ├── 054.py ├── 055.py ├── 056.py ├── 057.py ├── 058.py ├── 059.py ├── 060.py ├── 061.py ├── 062.py ├── 063.py ├── 064.py ├── 065.py ├── 066.py ├── 067.py ├── 068.py ├── 069.py ├── 070.py ├── 071.py ├── 072.py ├── 073.py ├── 074.py ├── 075.py ├── 076.py ├── 077.py ├── 078.py ├── 079.py ├── 080.py ├── 081.py ├── 082.py ├── 083.py ├── 084.py ├── 085.py ├── 086.py ├── 087.py ├── 088.py ├── 089.py ├── 090.py ├── 091.py ├── 092.py ├── 093.py ├── 094.py ├── 095.py ├── 096.py ├── 097.py ├── 098.py ├── 099.py └── 100.py ├── Python100.md └── README.md /100examples/001.py: -------------------------------------------------------------------------------- 1 | total=0 2 | for i in range(1,5): 3 | for j in range(1,5): 4 | for k in range(1,5): 5 | if ((i!=j)and(j!=k)and(k!=i)): 6 | print(i,j,k) 7 | total+=1 8 | print(total) 9 | 10 | 11 | 12 | import itertools 13 | sum2=0 14 | a=[1,2,3,4] 15 | for i in itertools.permutations(a,3): 16 | print(i) 17 | sum2+=1 18 | print(sum2) 19 | -------------------------------------------------------------------------------- /100examples/002.py: -------------------------------------------------------------------------------- 1 | profit=int(input('Show me the money: ')) 2 | bonus=0 3 | thresholds=[100000,100000,200000,200000,400000] 4 | rates=[0.1,0.075,0.05,0.03,0.015,0.01] 5 | for i in range(len(thresholds)): 6 | if profit<=thresholds[i]: 7 | bonus+=profit*rates[i] 8 | profit=0 9 | break 10 | else: 11 | bonus+=thresholds[i]*rates[i] 12 | profit-=thresholds[i] 13 | bonus+=profit*rates[-1] 14 | print(bonus) 15 | 16 | -------------------------------------------------------------------------------- /100examples/003.py: -------------------------------------------------------------------------------- 1 | n=0 2 | while (n+1)**2-n*n<=168: 3 | n+=1 4 | 5 | for i in range((n+1)**2): 6 | if i**0.5==int(i**0.5)and (i+168)**0.5==int((i+168)**0.5): 7 | print(i-100) 8 | 9 | -------------------------------------------------------------------------------- /100examples/004.py: -------------------------------------------------------------------------------- 1 | def isLeapYear(y): 2 | return (y%400==0 or (y%4==0 and y%100!=0)) 3 | DofM=[0,31,28,31,30,31,30,31,31,30,31,30] 4 | res=0 5 | year=int(input('Year:')) 6 | month=int(input('Month:')) 7 | day=int(input('day:')) 8 | if isLeapYear(year): 9 | DofM[2]+=1 10 | for i in range(month): 11 | res+=DofM[i] 12 | print(res+day) 13 | -------------------------------------------------------------------------------- /100examples/005.py: -------------------------------------------------------------------------------- 1 | raw=[] 2 | for i in range(3): 3 | x=int(input('int%d: '%(i))) 4 | raw.append(x) 5 | 6 | for i in range(len(raw)): 7 | for j in range(i,len(raw)): 8 | if raw[i]>raw[j]: 9 | raw[i],raw[j]=raw[j],raw[i] 10 | print(raw) 11 | 12 | 13 | raw2=[] 14 | for i in range(3): 15 | x=int(input('int%d: '%(i))) 16 | raw2.append(x) 17 | print(sorted(raw2)) 18 | -------------------------------------------------------------------------------- /100examples/006.py: -------------------------------------------------------------------------------- 1 | def Fib(n): 2 | return 1 if n<=2 else Fib(n-1)+Fib(n-2) 3 | print(Fib(int(input()))) 4 | 5 | 6 | target=int(input()) 7 | res=0 8 | a,b=1,1 9 | for i in range(target-1): 10 | a,b=b,a+b 11 | print(a) 12 | -------------------------------------------------------------------------------- /100examples/007.py: -------------------------------------------------------------------------------- 1 | import copy 2 | a = [1,2,3,4,['a','b']] 3 | 4 | b = a 5 | 6 | c = a[:] 7 | 8 | d = copy.copy(a) 9 | 10 | e = copy.deepcopy(a) 11 | 12 | a.append(5) 13 | a[4].append('c') 14 | 15 | print('a=',a) 16 | 17 | print('b=',b) 18 | 19 | print('c=',c) 20 | 21 | print('d=',d) 22 | 23 | print('e=',e) 24 | -------------------------------------------------------------------------------- /100examples/008.py: -------------------------------------------------------------------------------- 1 | for i in range(1,10): 2 | for j in range(1,i+1): 3 | print('%d*%d=%2ld '%(i,j,i*j),end='') 4 | print() 5 | -------------------------------------------------------------------------------- /100examples/009.py: -------------------------------------------------------------------------------- 1 | import time 2 | for i in range(4): 3 | print(str(int(time.time()))[-2:]) 4 | time.sleep(1) 5 | -------------------------------------------------------------------------------- /100examples/010.py: -------------------------------------------------------------------------------- 1 | import time 2 | 3 | for i in range(4): 4 | print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))) 5 | time.sleep(1) 6 | -------------------------------------------------------------------------------- /100examples/011.py: -------------------------------------------------------------------------------- 1 | month=int(input('繁殖几个月?: ')) 2 | month_1=1 3 | month_2=0 4 | month_3=0 5 | month_elder=0 6 | for i in range(month): 7 | month_1,month_2,month_3,month_elder=month_elder+month_3,month_1,month_2,month_elder+month_3 8 | print('第%d个月共'%(i+1),month_1+month_2+month_3+month_elder,'对兔子') 9 | print('其中1月兔:',month_1) 10 | print('其中2月兔:',month_2) 11 | print('其中3月兔:',month_3) 12 | print('其中成年兔:',month_elder) 13 | -------------------------------------------------------------------------------- /100examples/012.py: -------------------------------------------------------------------------------- 1 | import math 2 | for i in range(100,200): 3 | flag=0 4 | for j in range(2,round(math.sqrt(i))+1): 5 | if i%j==0: 6 | flag=1 7 | break 8 | if flag: 9 | continue 10 | print(i) 11 | 12 | 13 | print('\nSimplify the code with "else"\n') 14 | 15 | 16 | for i in range(100,200): 17 | for j in range(2,round(math.sqrt(i))+1): 18 | if i%j==0: 19 | break 20 | else: 21 | print(i) 22 | -------------------------------------------------------------------------------- /100examples/013.py: -------------------------------------------------------------------------------- 1 | for i in range(100,1000): 2 | s=str(i) 3 | one=int(s[-1]) 4 | ten=int(s[-2]) 5 | hun=int(s[-3]) 6 | if i == one**3+ten**3+hun**3: 7 | print(i) 8 | -------------------------------------------------------------------------------- /100examples/014.py: -------------------------------------------------------------------------------- 1 | target=int(input('输入一个整数:')) 2 | print(target,'= ',end='') 3 | 4 | if target<0: 5 | target=abs(target) 6 | print('-1*',end='') 7 | 8 | flag=0 9 | if target<=1: 10 | print(target) 11 | flag=1 12 | 13 | 14 | while True: 15 | if flag: 16 | break 17 | for i in range(2,int(target+1)): 18 | if target%i==0: 19 | print("%d"%i,end='') 20 | if target==i: 21 | flag=1 22 | break 23 | print('*',end='') 24 | target/=i 25 | break 26 | 27 | 28 | -------------------------------------------------------------------------------- /100examples/015.py: -------------------------------------------------------------------------------- 1 | points=int(input('输入分数:')) 2 | if points>=90: 3 | grade='A' 4 | elif points<60: 5 | grade='C' 6 | else: 7 | grade='B' 8 | print(grade) 9 | -------------------------------------------------------------------------------- /100examples/016.py: -------------------------------------------------------------------------------- 1 | import datetime 2 | print(datetime.date.today()) 3 | print(datetime.date(2333,2,3)) 4 | print(datetime.date.today().strftime('%d/%m/%Y')) 5 | day=datetime.date(1111,2,3) 6 | day=day.replace(year=day.year+22) 7 | print(day) 8 | -------------------------------------------------------------------------------- /100examples/017.py: -------------------------------------------------------------------------------- 1 | string=input("输入字符串:") 2 | alp=0 3 | num=0 4 | spa=0 5 | oth=0 6 | for i in range(len(string)): 7 | if string[i].isspace(): 8 | spa+=1 9 | elif string[i].isdigit(): 10 | num+=1 11 | elif string[i].isalpha(): 12 | alp+=1 13 | else: 14 | oth+=1 15 | print('space: ',spa) 16 | print('digit: ',num) 17 | print('alpha: ',alp) 18 | print('other: ',oth) 19 | -------------------------------------------------------------------------------- /100examples/018.py: -------------------------------------------------------------------------------- 1 | a=input('被加数字:') 2 | n=int(input('加几次?:')) 3 | res=0 4 | for i in range(n): 5 | res+=int(a) 6 | a+=a[0] 7 | print('结果是:',res) 8 | -------------------------------------------------------------------------------- /100examples/019.py: -------------------------------------------------------------------------------- 1 | def factor(num): 2 | target=int(num) 3 | res=set() 4 | for i in range(1,num): 5 | if num%i==0: 6 | res.add(i) 7 | res.add(num/i) 8 | return res 9 | 10 | for i in range(2,1001): 11 | if i==sum(factor(i))-i: 12 | print(i) 13 | -------------------------------------------------------------------------------- /100examples/020.py: -------------------------------------------------------------------------------- 1 | high=200. 2 | total=100 3 | for i in range(10): 4 | high/=2 5 | total+=high 6 | print(high/2) 7 | print('总长:',total) 8 | 9 | -------------------------------------------------------------------------------- /100examples/021.py: -------------------------------------------------------------------------------- 1 | peach=1 2 | for i in range(9): 3 | peach=(peach+1)*2 4 | print(peach) 5 | -------------------------------------------------------------------------------- /100examples/022.py: -------------------------------------------------------------------------------- 1 | a=set(['x','y','z']) 2 | b=set(['x','y','z']) 3 | c=set(['x','y','z']) 4 | c-=set(('x','z')) 5 | a-=set('x') 6 | for i in a: 7 | for j in b: 8 | for k in c: 9 | if len(set((i,j,k)))==3: 10 | print('a:%s,b:%s,c:%s'%(i,j,k)) 11 | -------------------------------------------------------------------------------- /100examples/023.py: -------------------------------------------------------------------------------- 1 | def draw(num): 2 | a="*"*(2*(4-num)+1) 3 | print(a.center(9,' ')) 4 | if num!=1: 5 | draw(num-1) 6 | print(a.center(9,' ')) 7 | draw(4) 8 | -------------------------------------------------------------------------------- /100examples/024.py: -------------------------------------------------------------------------------- 1 | a = 2.0 2 | b = 1.0 3 | s = 0 4 | for n in range(1,21): 5 | s += a / b 6 | a,b = a + b,a 7 | print (s) 8 | -------------------------------------------------------------------------------- /100examples/025.py: -------------------------------------------------------------------------------- 1 | res=1 2 | for i in range(20,1,-1): 3 | res=i*res+1 4 | print(res) 5 | -------------------------------------------------------------------------------- /100examples/026.py: -------------------------------------------------------------------------------- 1 | def factorial(n): 2 | return n*factorial(n-1) if n>1 else 1 3 | print(factorial(5)) 4 | -------------------------------------------------------------------------------- /100examples/027.py: -------------------------------------------------------------------------------- 1 | def rec(string): 2 | if len(string)!=1: 3 | rec(string[1:]) 4 | print(string[0],end='') 5 | 6 | rec(input('string here:')) 7 | -------------------------------------------------------------------------------- /100examples/028.py: -------------------------------------------------------------------------------- 1 | def age(n): 2 | if n==1: 3 | return 10 4 | return 2+age(n-1) 5 | print(age(5)) 6 | -------------------------------------------------------------------------------- /100examples/029.py: -------------------------------------------------------------------------------- 1 | n=int(input('输入一个正整数:')) 2 | n=str(n) 3 | print('%d位数'%len(n)) 4 | print(n[::-1]) 5 | -------------------------------------------------------------------------------- /100examples/030.py: -------------------------------------------------------------------------------- 1 | n=input("随便你输入啥啦:") 2 | a=0 3 | b=len(n)-1 4 | flag=True 5 | while a 1: 5 | for j in range(2,i): 6 | if (i % j) == 0: 7 | break 8 | else: 9 | print(i) 10 | -------------------------------------------------------------------------------- /100examples/037.py: -------------------------------------------------------------------------------- 1 | raw=[] 2 | for i in range(10): 3 | x=int(input('int%d: '%(i))) 4 | raw.append(x) 5 | 6 | for i in range(len(raw)): 7 | for j in range(i,len(raw)): 8 | if raw[i]>raw[j]: 9 | raw[i],raw[j]=raw[j],raw[i] 10 | print(raw) 11 | -------------------------------------------------------------------------------- /100examples/038.py: -------------------------------------------------------------------------------- 1 | mat=[[1,2,3], 2 | [3,4,5], 3 | [4,5,6] 4 | ] 5 | res=0 6 | for i in range(len(mat)): 7 | res+=mat[i][i] 8 | print(res) 9 | -------------------------------------------------------------------------------- /100examples/039.py: -------------------------------------------------------------------------------- 1 | lis=[1,10,100,1000,10000,100000] 2 | n=int(input('insert a number: ')) 3 | lis.append(n) 4 | for i in range(len(lis)-1): 5 | if lis[i]>=n: 6 | for j in range(i,len(lis)): 7 | lis[j],lis[-1]=lis[-1],lis[j] 8 | break 9 | print(lis) 10 | -------------------------------------------------------------------------------- /100examples/040.py: -------------------------------------------------------------------------------- 1 | lis=[1,10,100,1000,10000,100000] 2 | for i in range(int(len(lis)/2)): 3 | lis[i],lis[len(lis)-1-i]=lis[len(lis)-1-i],lis[i] 4 | print('第一种实现:') 5 | print(lis) 6 | 7 | 8 | lis=[1,10,100,1000,10000,100000] 9 | print('第二种实现:') 10 | lis.reverse() 11 | print(lis) 12 | -------------------------------------------------------------------------------- /100examples/041.py: -------------------------------------------------------------------------------- 1 | def dummy(): 2 | i=0 3 | print(i) 4 | i+=1 5 | 6 | class cls: 7 | i=0 8 | def dummy(self): 9 | print(self.i) 10 | self.i+=1 11 | 12 | a=cls() 13 | for i in range(50): 14 | dummy() 15 | a.dummy() 16 | -------------------------------------------------------------------------------- /100examples/042.py: -------------------------------------------------------------------------------- 1 | i=0 2 | n=0 3 | def dummy(): 4 | i=0 5 | print(i) 6 | i+=1 7 | def dummy2(): 8 | global n 9 | print(n) 10 | n+=1 11 | print('函数内部的同名变量') 12 | for j in range(20): 13 | print(i) 14 | dummy() 15 | i+=1 16 | print('global声明同名变量') 17 | for k in range(20): 18 | print(n) 19 | dummy2() 20 | n+=10 21 | -------------------------------------------------------------------------------- /100examples/043.py: -------------------------------------------------------------------------------- 1 | class dummy: 2 | num=1 3 | def Num(self): 4 | print('class dummy num:',self.num) 5 | print('global num: ',num) 6 | self.num+=1 7 | 8 | n=dummy() 9 | num=1 10 | for i in range(5): 11 | num*=10 12 | n.Num() 13 | -------------------------------------------------------------------------------- /100examples/044.py: -------------------------------------------------------------------------------- 1 | X = [[12,7,3], 2 | [4 ,5,6], 3 | [7 ,8,9]] 4 | 5 | Y = [[5,8,1], 6 | [6,7,3], 7 | [4,5,9]] 8 | 9 | res=[[0,0,0], 10 | [0,0,0], 11 | [0,0,0]] 12 | for i in range(len(res)): 13 | for j in range(len(res[0])): 14 | res[i][j]=X[i][j]+Y[i][j] 15 | print(res) 16 | -------------------------------------------------------------------------------- /100examples/045.py: -------------------------------------------------------------------------------- 1 | res=0 2 | for i in range(1,101): 3 | res+=i 4 | print(res) 5 | -------------------------------------------------------------------------------- /100examples/046.py: -------------------------------------------------------------------------------- 1 | while True: 2 | try: 3 | n=float(input('输入一个数字:')) 4 | except: 5 | print('输入错误') 6 | continue 7 | dn=n**2 8 | print('其平方为:',dn) 9 | if dn<50: 10 | print('平方小于50,退出') 11 | break 12 | -------------------------------------------------------------------------------- /100examples/047.py: -------------------------------------------------------------------------------- 1 | def exc(a,b): 2 | return (b,a) 3 | a=0 4 | b=10 5 | a,b=exc(a,b) 6 | print(a,b) 7 | -------------------------------------------------------------------------------- /100examples/048.py: -------------------------------------------------------------------------------- 1 | a=int(input('a=')) 2 | b=int(input('b=')) 3 | if ab: 6 | print('a>b') 7 | else: 8 | print('a=b') 9 | -------------------------------------------------------------------------------- /100examples/049.py: -------------------------------------------------------------------------------- 1 | Max=lambda x,y:x*(x>=y)+y*(y>x) 2 | Min=lambda x,y:x*(x<=y)+y*(y>4 7 | d=c&b 8 | print('a:',bin(a)) 9 | print('b:',bin(b)) 10 | print('c:',bin(c)) 11 | print('d:',bin(d)) 12 | 13 | -------------------------------------------------------------------------------- /100examples/055.py: -------------------------------------------------------------------------------- 1 | print(~234) 2 | print(~~234) 3 | -------------------------------------------------------------------------------- /100examples/056.py: -------------------------------------------------------------------------------- 1 | from tkinter import * 2 | canvas=Canvas(width=800,height=600,bg='yellow') 3 | canvas.pack(expand=YES,fill=BOTH) 4 | k=1 5 | j=1 6 | for i in range(26): 7 | canvas.create_oval(310-k,250-k,310+k,250+k,width=1) 8 | k+=j 9 | j+=0.3 10 | mainloop() 11 | -------------------------------------------------------------------------------- /100examples/057.py: -------------------------------------------------------------------------------- 1 | if __name__ == '__main__': 2 | from tkinter import * 3 | 4 | canvas = Canvas(width=300, height=300, bg='green') 5 | canvas.pack(expand=YES, fill=BOTH) 6 | x0 = 263 7 | y0 = 263 8 | y1 = 275 9 | x1 = 275 10 | for i in range(19): 11 | canvas.create_line(x0,y0,x0,y1, width=1, fill='red') 12 | x0 = x0 - 5 13 | y0 = y0 - 5 14 | x1 = x1 + 5 15 | y1 = y1 + 5 16 | 17 | x0 = 263 18 | y1 = 275 19 | y0 = 263 20 | for i in range(21): 21 | canvas.create_line(x0,y0,x0,y1,fill = 'red') 22 | x0 += 5 23 | y0 += 5 24 | y1 += 5 25 | 26 | mainloop() 27 | -------------------------------------------------------------------------------- /100examples/058.py: -------------------------------------------------------------------------------- 1 | if __name__ == '__main__': 2 | from tkinter import * 3 | root = Tk() 4 | root.title('Canvas') 5 | canvas = Canvas(root,width = 400,height = 400,bg = 'yellow') 6 | x0 = 263 7 | y0 = 263 8 | y1 = 275 9 | x1 = 275 10 | for i in range(19): 11 | canvas.create_rectangle(x0,y0,x1,y1) 12 | x0 -= 5 13 | y0 -= 5 14 | x1 += 5 15 | y1 += 5 16 | 17 | canvas.pack() 18 | root.mainloop() 19 | -------------------------------------------------------------------------------- /100examples/059.py: -------------------------------------------------------------------------------- 1 | if __name__ == '__main__': 2 | from tkinter import * 3 | canvas = Canvas(width = 300,height = 300,bg = 'green') 4 | canvas.pack(expand = YES,fill = BOTH) 5 | x0 = 150 6 | y0 = 100 7 | canvas.create_oval(x0 - 10,y0 - 10,x0 + 10,y0 + 10) 8 | canvas.create_oval(x0 - 20,y0 - 20,x0 + 20,y0 + 20) 9 | canvas.create_oval(x0 - 50,y0 - 50,x0 + 50,y0 + 50) 10 | import math 11 | B = 0.809 12 | for i in range(16): 13 | a = 2 * math.pi / 16 * i 14 | x = math.ceil(x0 + 48 * math.cos(a)) 15 | y = math.ceil(y0 + 48 * math.sin(a) * B) 16 | canvas.create_line(x0,y0,x,y,fill = 'red') 17 | canvas.create_oval(x0 - 60,y0 - 60,x0 + 60,y0 + 60) 18 | 19 | 20 | for k in range(501): 21 | for i in range(17): 22 | a = (2 * math.pi / 16) * i + (2 * math.pi / 180) * k 23 | x = math.ceil(x0 + 48 * math.cos(a)) 24 | y = math.ceil(y0 + 48 + math.sin(a) * B) 25 | canvas.create_line(x0,y0,x,y,fill = 'red') 26 | for j in range(51): 27 | a = (2 * math.pi / 16) * i + (2* math.pi / 180) * k - 1 28 | x = math.ceil(x0 + 48 * math.cos(a)) 29 | y = math.ceil(y0 + 48 * math.sin(a) * B) 30 | canvas.create_line(x0,y0,x,y,fill = 'red') 31 | mainloop() 32 | -------------------------------------------------------------------------------- /100examples/060.py: -------------------------------------------------------------------------------- 1 | s='zhangguang101' 2 | print(len(s)) 3 | -------------------------------------------------------------------------------- /100examples/061.py: -------------------------------------------------------------------------------- 1 | def generate(numRows): 2 | r = [[1]] 3 | for i in range(1,numRows): 4 | r.append(list(map(lambda x,y:x+y, [0]+r[-1],r[-1]+[0]))) 5 | return r[:numRows] 6 | a=generate(10) 7 | for i in a: 8 | print(i) 9 | -------------------------------------------------------------------------------- /100examples/062.py: -------------------------------------------------------------------------------- 1 | s1='aabbxuebixuebi' 2 | s2='ab' 3 | s3='xue' 4 | print(s1.find(s2)) 5 | print(s1.find(s3)) 6 | -------------------------------------------------------------------------------- /100examples/063.py: -------------------------------------------------------------------------------- 1 | if __name__ == '__main__': 2 | from tkinter import * 3 | x = 360 4 | y = 160 5 | top = y - 30 6 | bottom = y - 30 7 | 8 | canvas = Canvas(width = 400,height = 600,bg = 'white') 9 | for i in range(20): 10 | canvas.create_oval(250 - top,250 - bottom,250 + top,250 + bottom) 11 | top -= 5 12 | bottom += 5 13 | canvas.pack() 14 | mainloop() 15 | -------------------------------------------------------------------------------- /100examples/064.py: -------------------------------------------------------------------------------- 1 | if __name__ == '__main__': 2 | from tkinter import * 3 | canvas = Canvas(width = 400,height = 600,bg = 'white') 4 | left = 20 5 | right = 50 6 | top = 50 7 | num = 15 8 | for i in range(num): 9 | canvas.create_oval(250 - right,250 - left,250 + right,250 + left) 10 | canvas.create_oval(250 - 20,250 - top,250 + 20,250 + top) 11 | canvas.create_rectangle(20 - 2 * i,20 - 2 * i,10 * (i + 2),10 * ( i + 2)) 12 | right += 5 13 | left += 5 14 | top += 10 15 | 16 | canvas.pack() 17 | mainloop() 18 | -------------------------------------------------------------------------------- /100examples/065.py: -------------------------------------------------------------------------------- 1 | import math 2 | from tkinter import * 3 | 4 | class PTS: 5 | def __init__(self): 6 | self.x = 0 7 | self.y = 0 8 | points = [] 9 | 10 | def LineToDemo(): 11 | screenx = 400 12 | screeny = 400 13 | canvas = Canvas(width = screenx,height = screeny,bg = 'white') 14 | 15 | AspectRatio = 0.85 16 | MAXPTS = 15 17 | h = screeny 18 | w = screenx 19 | xcenter = w / 2 20 | ycenter = h / 2 21 | radius = (h - 30) / (AspectRatio * 2) - 20 22 | step = 360 / MAXPTS 23 | angle = 0.0 24 | for i in range(MAXPTS): 25 | rads = angle * math.pi / 180.0 26 | p = PTS() 27 | p.x = xcenter + int(math.cos(rads) * radius) 28 | p.y = ycenter - int(math.sin(rads) * radius * AspectRatio) 29 | angle += step 30 | points.append(p) 31 | canvas.create_oval(xcenter - radius,ycenter - radius, 32 | xcenter + radius,ycenter + radius) 33 | for i in range(MAXPTS): 34 | for j in range(i,MAXPTS): 35 | canvas.create_line(points[i].x,points[i].y,points[j].x,points[j].y) 36 | 37 | canvas.pack() 38 | mainloop() 39 | if __name__ == '__main__': 40 | LineToDemo() 41 | -------------------------------------------------------------------------------- /100examples/066.py: -------------------------------------------------------------------------------- 1 | raw=[] 2 | for i in range(3): 3 | x=int(input('int%d: '%(i))) 4 | raw.append(x) 5 | 6 | for i in range(len(raw)): 7 | for j in range(i,len(raw)): 8 | if raw[i]>raw[j]: 9 | raw[i],raw[j]=raw[j],raw[i] 10 | print(raw) 11 | 12 | 13 | raw2=[] 14 | for i in range(3): 15 | x=int(input('int%d: '%(i))) 16 | raw2.append(x) 17 | print(sorted(raw2)) 18 | -------------------------------------------------------------------------------- /100examples/067.py: -------------------------------------------------------------------------------- 1 | li=[3,2,5,7,8,1,5] 2 | 3 | li[-1],li[li.index(min(li))]=li[li.index(min(li))],li[-1] 4 | 5 | m=li[0] 6 | ind=li.index(max(li)) 7 | li[0]=li[ind] 8 | li[ind]=m 9 | 10 | print(li) 11 | -------------------------------------------------------------------------------- /100examples/068.py: -------------------------------------------------------------------------------- 1 | from collections import * 2 | li=[1,2,3,4,5,6,7,8,9] 3 | deq=deque(li,maxlen=len(li)) 4 | print(li) 5 | deq.rotate(int(input('rotate:'))) 6 | print(list(deq)) 7 | -------------------------------------------------------------------------------- /100examples/069.py: -------------------------------------------------------------------------------- 1 | if __name__ == '__main__': 2 | nmax = 50 3 | n = int(input('请输入总人数:')) 4 | num = [] 5 | for i in range(n): 6 | num.append(i + 1) 7 | 8 | i = 0 9 | k = 0 10 | m = 0 11 | 12 | while m < n - 1: 13 | if num[i] != 0 : k += 1 14 | if k == 3: 15 | num[i] = 0 16 | k = 0 17 | m += 1 18 | i += 1 19 | if i == n : i = 0 20 | 21 | i = 0 22 | while num[i] == 0: i += 1 23 | print(num[i]) 24 | -------------------------------------------------------------------------------- /100examples/070.py: -------------------------------------------------------------------------------- 1 | def lenofstr(s): 2 | return len(s) 3 | 4 | print(lenofstr('tanxiaofengsheng')) 5 | -------------------------------------------------------------------------------- /100examples/071.py: -------------------------------------------------------------------------------- 1 | N = 3 2 | #stu 3 | # num : string 4 | # name : string 5 | # score[4]: list 6 | student = [] 7 | for i in range(5): 8 | student.append(['','',[]]) 9 | 10 | def input_stu(stu): 11 | for i in range(N): 12 | stu[i][0] = input('input student num:\n') 13 | stu[i][1] = input('input student name:\n') 14 | for j in range(3): 15 | stu[i][2].append(int(input('score:\n'))) 16 | 17 | def output_stu(stu): 18 | for i in range(N): 19 | print ('%-6s%-10s' % ( stu[i][0],stu[i][1] )) 20 | for j in range(3): 21 | print ('%-8d' % stu[i][2][j]) 22 | 23 | if __name__ == '__main__': 24 | input_stu(student) 25 | print (student) 26 | output_stu(student) 27 | -------------------------------------------------------------------------------- /100examples/072.py: -------------------------------------------------------------------------------- 1 | class Node: 2 | 3 | def __init__(self, data): 4 | self.data = data 5 | self.next = None 6 | 7 | def get_data(self): 8 | return self.data 9 | 10 | class List: 11 | 12 | def __init__(self, head): 13 | self.head = head 14 | 15 | def is_empty(self): 16 | return self.get_len() == 0 17 | 18 | def get_len(self): 19 | length = 0 20 | temp = self.head 21 | while temp is not None: 22 | length += 1 23 | temp = temp.next 24 | return length 25 | 26 | def append(self, node): 27 | temp = self.head 28 | while temp.next is not None: 29 | temp = temp.next 30 | temp.next = node 31 | 32 | def delete(self, index): 33 | if index < 1 or index > self.get_len(): 34 | print("给定位置不合理") 35 | return 36 | if index == 1: 37 | self.head = self.head.next 38 | return 39 | temp = self.head 40 | cur_pos = 0 41 | while temp is not None: 42 | cur_pos += 1 43 | if cur_pos == index-1: 44 | temp.next = temp.next.next 45 | temp = temp.next 46 | 47 | def insert(self, pos, node): 48 | if pos < 1 or pos > self.get_len(): 49 | print("插入结点位置不合理") 50 | return 51 | temp = self.head 52 | cur_pos = 0 53 | while temp is not Node: 54 | cur_pos += 1 55 | if cur_pos == pos-1: 56 | node.next = temp.next 57 | temp.next =node 58 | break 59 | temp = temp.next 60 | 61 | def reverse(self, head): 62 | if head is None and head.next is None: 63 | return head 64 | pre = head 65 | cur = head.next 66 | while cur is not None: 67 | temp = cur.next 68 | cur.next = pre 69 | pre = cur 70 | cur = temp 71 | head.next = None 72 | return pre 73 | 74 | def print_list(self, head): 75 | init_data = [] 76 | while head is not None: 77 | init_data.append(head.get_data()) 78 | head = head.next 79 | return init_data 80 | 81 | if __name__=='__main__': 82 | head=Node('head') 83 | link=List(head) 84 | for i in range(10): 85 | node=Node(i) 86 | link.append(node) 87 | print(link.print_list(head)) 88 | -------------------------------------------------------------------------------- /100examples/073.py: -------------------------------------------------------------------------------- 1 | class Node: 2 | 3 | def __init__(self, data): 4 | self.data = data 5 | self.next = None 6 | 7 | def get_data(self): 8 | return self.data 9 | 10 | class List: 11 | 12 | def __init__(self, head): 13 | self.head = head 14 | 15 | def is_empty(self): 16 | return self.get_len() == 0 17 | 18 | def get_len(self): 19 | length = 0 20 | temp = self.head 21 | while temp is not None: 22 | length += 1 23 | temp = temp.next 24 | return length 25 | 26 | def append(self, node): 27 | temp = self.head 28 | while temp.next is not None: 29 | temp = temp.next 30 | temp.next = node 31 | 32 | def delete(self, index): 33 | if index < 1 or index > self.get_len(): 34 | print("给定位置不合理") 35 | return 36 | if index == 1: 37 | self.head = self.head.next 38 | return 39 | temp = self.head 40 | cur_pos = 0 41 | while temp is not None: 42 | cur_pos += 1 43 | if cur_pos == index-1: 44 | temp.next = temp.next.next 45 | temp = temp.next 46 | 47 | def insert(self, pos, node): 48 | if pos < 1 or pos > self.get_len(): 49 | print("插入结点位置不合理") 50 | return 51 | temp = self.head 52 | cur_pos = 0 53 | while temp is not Node: 54 | cur_pos += 1 55 | if cur_pos == pos-1: 56 | node.next = temp.next 57 | temp.next =node 58 | break 59 | temp = temp.next 60 | 61 | def reverse(self, head): 62 | if head is None and head.next is None: 63 | return head 64 | pre = head 65 | cur = head.next 66 | while cur is not None: 67 | temp = cur.next 68 | cur.next = pre 69 | pre = cur 70 | cur = temp 71 | head.next = None 72 | return pre 73 | 74 | def print_list(self, head): 75 | init_data = [] 76 | while head is not None: 77 | init_data.append(head.get_data()) 78 | head = head.next 79 | return init_data 80 | 81 | if __name__=='__main__': 82 | head=Node('head') 83 | link=List(head) 84 | for i in range(10): 85 | node=Node(i) 86 | link.append(node) 87 | print(link.print_list(head)) 88 | print(link.print_list(link.reverse(head))) 89 | -------------------------------------------------------------------------------- /100examples/074.py: -------------------------------------------------------------------------------- 1 | a=[2,6,8] 2 | b=[7,0,4] 3 | a.extend(b) 4 | a.sort() 5 | print(a) 6 | -------------------------------------------------------------------------------- /100examples/075.py: -------------------------------------------------------------------------------- 1 | if __name__ == '__main__': 2 | for i in range(5): 3 | n = 0 4 | if i != 1: n += 1 5 | if i == 3: n += 1 6 | if i == 4: n += 1 7 | if i != 4: n += 1 8 | if n == 3: print (64 + i) 9 | -------------------------------------------------------------------------------- /100examples/076.py: -------------------------------------------------------------------------------- 1 | def peven(n): 2 | i = 0 3 | s = 0.0 4 | for i in range(2,n + 1,2): 5 | s += 1.0 / i 6 | return s 7 | 8 | def podd(n): 9 | s = 0.0 10 | for i in range(1, n + 1,2): 11 | s += 1.0 / i 12 | return s 13 | 14 | def dcall(fp,n): 15 | s = fp(n) 16 | return s 17 | 18 | if __name__ == '__main__': 19 | n = int(input('input a number: ')) 20 | if n % 2 == 0: 21 | sum = dcall(peven,n) 22 | else: 23 | sum = dcall(podd,n) 24 | print (sum) 25 | -------------------------------------------------------------------------------- /100examples/077.py: -------------------------------------------------------------------------------- 1 | l=['moyu','niupi','xuecaibichi','shengfaji','42'] 2 | for i in range(len(l)): 3 | print(l[i]) 4 | -------------------------------------------------------------------------------- /100examples/078.py: -------------------------------------------------------------------------------- 1 | if __name__ == '__main__': 2 | person = {"li":18,"wang":50,"zhang":20,"sun":22} 3 | m = 'li' 4 | for key in person.keys(): 5 | if person[m] < person[key]: 6 | m = key 7 | 8 | print ('%s,%d' % (m,person[m])) 9 | -------------------------------------------------------------------------------- /100examples/079.py: -------------------------------------------------------------------------------- 1 | l=['baaa','aaab','aaba','aaaa','abaa'] 2 | l.sort() 3 | print(l) 4 | -------------------------------------------------------------------------------- /100examples/080.py: -------------------------------------------------------------------------------- 1 | if __name__ == '__main__': 2 | i = 0 3 | j = 1 4 | x = 0 5 | while (i < 5) : 6 | x = 4 * j 7 | for i in range(0,5) : 8 | if(x%4 != 0) : 9 | break 10 | else : 11 | i += 1 12 | x = (x/4) * 5 +1 13 | j += 1 14 | print(x) 15 | 16 | for p in range(5): 17 | x=(x-1)/5*4 18 | print(x) 19 | -------------------------------------------------------------------------------- /100examples/081.py: -------------------------------------------------------------------------------- 1 | a = 809 2 | for i in range(10,100): 3 | b = i * a 4 | if b >= 1000 and b <= 10000 and 8 * i < 100 and 9 * i >= 100: 5 | print(b,' = 800 * ', i, ' + 9 * ', i) 6 | 7 | 8 | for i in range(10,100): 9 | if 8*i>99 or 9*i<100: 10 | continue 11 | if 809*i==800*i+9*i: 12 | print(i) 13 | break 14 | -------------------------------------------------------------------------------- /100examples/082.py: -------------------------------------------------------------------------------- 1 | n=eval('0o'+str(int(input('八进制输入:')))) 2 | print(n) 3 | -------------------------------------------------------------------------------- /100examples/083.py: -------------------------------------------------------------------------------- 1 | if __name__ == '__main__': 2 | sum = 4 3 | s = 4 4 | for j in range(2,9): 5 | print (sum) 6 | if j <= 2: 7 | s *= 7 8 | else: 9 | s *= 8 10 | sum += s 11 | print('sum = %d' % sum) 12 | -------------------------------------------------------------------------------- /100examples/084.py: -------------------------------------------------------------------------------- 1 | delimiter = ',' 2 | mylist = ['Brazil', 'Russia', 'India', 'China'] 3 | print(delimiter.join(mylist)) 4 | -------------------------------------------------------------------------------- /100examples/085.py: -------------------------------------------------------------------------------- 1 | if __name__ == '__main__': 2 | zi = int(input('输入一个数字:')) 3 | n1 = 1 4 | c9 = 1 5 | m9 = 9 6 | sum = 9 7 | while n1 != 0: 8 | if sum % zi == 0: 9 | n1 = 0 10 | else: 11 | m9 *= 10 12 | sum += m9 13 | c9 += 1 14 | print ('%d 个 9 可以被 %d 整除 : %d' % (c9,zi,sum)) 15 | r = sum / zi 16 | print ('%d / %d = %d' % (sum,zi,r)) 17 | -------------------------------------------------------------------------------- /100examples/086.py: -------------------------------------------------------------------------------- 1 | a='guangtou' 2 | b='feipang' 3 | print(b+a) 4 | -------------------------------------------------------------------------------- /100examples/087.py: -------------------------------------------------------------------------------- 1 | if __name__ == '__main__': 2 | class student: 3 | x = 0 4 | c = 0 5 | def f(stu): 6 | stu.x = 20 7 | stu.c = 'c' 8 | a= student() 9 | a.x = 3 10 | a.c = 'a' 11 | f(a) 12 | print(a.x,a.c) 13 | -------------------------------------------------------------------------------- /100examples/088.py: -------------------------------------------------------------------------------- 1 | for i in range(3): 2 | print('*'*int(input('input a number: '))) 3 | -------------------------------------------------------------------------------- /100examples/089.py: -------------------------------------------------------------------------------- 1 | n=input() 2 | n = str(n) 3 | a=[] 4 | for i in range(4): 5 | a.append((int(n[i])+5)%10) 6 | a[0],a[3]=a[3],a[0] 7 | a[1],a[2]=a[2],a[1] 8 | print ("".join('%s' %s for s in a)) 9 | -------------------------------------------------------------------------------- /100examples/090.py: -------------------------------------------------------------------------------- 1 | #list 2 | #新建列表 3 | testList=[10086,'中国移动',[1,2,4,5]] 4 | 5 | #访问列表长度 6 | print (len(testList) ) 7 | #到列表结尾 8 | print (testList[1:]) 9 | #向列表添加元素 10 | testList.append('i\'m new here!') 11 | 12 | print (len(testList) ) 13 | print (testList[-1] ) 14 | #弹出列表的最后一个元素 15 | print (testList.pop(1) ) 16 | print (len(testList) ) 17 | print (testList ) 18 | #list comprehension 19 | #后面有介绍,暂时掠过 20 | matrix = [[1, 2, 3], 21 | [4, 5, 6], 22 | [7, 8, 9]] 23 | print (matrix ) 24 | print (matrix[1] ) 25 | col2 = [row[1] for row in matrix]#get a column from a matrix 26 | print (col2 ) 27 | col2even = [row[1] for row in matrix if row[1] % 2 == 0]#filter odd item 28 | print (col2even) 29 | -------------------------------------------------------------------------------- /100examples/091.py: -------------------------------------------------------------------------------- 1 | if __name__ == '__main__': 2 | import time 3 | print (time.ctime(time.time())) 4 | print (time.asctime(time.localtime(time.time()))) 5 | print (time.asctime(time.gmtime(time.time()))) 6 | -------------------------------------------------------------------------------- /100examples/092.py: -------------------------------------------------------------------------------- 1 | if __name__ == '__main__': 2 | import time 3 | start = time.time() 4 | for i in range(3000): 5 | print(i) 6 | end = time.time() 7 | 8 | print (end - start) 9 | -------------------------------------------------------------------------------- /100examples/093.py: -------------------------------------------------------------------------------- 1 | if __name__ == '__main__': 2 | import time 3 | start = time.clock() 4 | for i in range(100): 5 | print(i) 6 | end = time.clock() 7 | print('different is %6.3f' % (end - start)) 8 | -------------------------------------------------------------------------------- /100examples/094.py: -------------------------------------------------------------------------------- 1 | if __name__ == '__main__': 2 | import time 3 | import random 4 | 5 | play_it = input('do you want to play it.(\'y\' or \'n\')') 6 | while play_it == 'y': 7 | c = input('input a character:\n') 8 | i = random.randint(0,2**32) % 100 9 | print ('please input number you guess:\n') 10 | start = time.clock() 11 | a = time.time() 12 | guess = int(input('input your guess:\n')) 13 | while guess != i: 14 | if guess > i: 15 | print('please input a little smaller') 16 | guess = int(input('input your guess:\n')) 17 | else: 18 | print('please input a little bigger') 19 | guess = int(input('input your guess:\n')) 20 | end = time.clock() 21 | b = time.time() 22 | var = (end - start) / 18.2 23 | print (var) 24 | # print 'It took you %6.3 seconds' % time.difftime(b,a)) 25 | if var < 15: 26 | print ('you are very clever!') 27 | elif var < 25: 28 | print ('you are normal!') 29 | else: 30 | print ('you are stupid!') 31 | print ('Congradulations') 32 | print ('The number you guess is %d' % i) 33 | play_it = input('do you want to play it.') 34 | -------------------------------------------------------------------------------- /100examples/095.py: -------------------------------------------------------------------------------- 1 | from dateutil import parser 2 | dt = parser.parse("Aug 28 2015 12:00AM") 3 | print (dt) 4 | -------------------------------------------------------------------------------- /100examples/096.py: -------------------------------------------------------------------------------- 1 | s1='xuebixuebixuebixuebixuebixuebixuebixue' 2 | s2='xuebi' 3 | print(s1.count(s2)) 4 | -------------------------------------------------------------------------------- /100examples/097.py: -------------------------------------------------------------------------------- 1 | if __name__ == '__main__': 2 | from sys import stdout 3 | filename = input('输入文件名:\n') 4 | fp = open(filename,"w") 5 | ch = input('输入字符串:\n') 6 | while ch != '#': 7 | fp.write(ch) 8 | stdout.write(ch) 9 | ch = input('') 10 | fp.close() 11 | -------------------------------------------------------------------------------- /100examples/098.py: -------------------------------------------------------------------------------- 1 | if __name__ == '__main__': 2 | fp = open('test.txt','w') 3 | string = input('please input a string:\n') 4 | string = string.upper() 5 | fp.write(string) 6 | fp = open('test.txt','r') 7 | print (fp.read()) 8 | fp.close() 9 | -------------------------------------------------------------------------------- /100examples/099.py: -------------------------------------------------------------------------------- 1 | if __name__ == '__main__': 2 | import string 3 | fp = open('test1.txt') 4 | a = fp.read() 5 | fp.close() 6 | 7 | fp = open('test2.txt') 8 | b = fp.read() 9 | fp.close() 10 | 11 | fp = open('test3.txt','w') 12 | l = list(a + b) 13 | l.sort() 14 | s = '' 15 | s = s.join(l) 16 | fp.write(s) 17 | fp.close() 18 | -------------------------------------------------------------------------------- /100examples/100.py: -------------------------------------------------------------------------------- 1 | i = ['a', 'b'] 2 | l = [1, 2] 3 | print (dict(zip(i,l))) 4 | -------------------------------------------------------------------------------- /Python100.md: -------------------------------------------------------------------------------- 1 | # Python3 100例 2 | > 原题地址: 3 | > http://www.runoob.com/python/python-100-examples.html 4 | > 原例为py2.7版本 5 | > 重写过程中有不少是随意发挥的 6 | > 重写运行版本:Python3.7 7 | 8 | #### 实例001:数字组合 9 | **题目:**有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? 10 | 11 | **程序分析:**遍历全部可能,把有重复的剃掉。 12 | 13 | ``` 14 | total=0 15 | for i in range(1,5): 16 | for j in range(1,5): 17 | for k in range(1,5): 18 | if ((i!=j)and(j!=k)and(k!=i)): 19 | print(i,j,k) 20 | total+=1 21 | print(total) 22 | ``` 23 | **简便方法:**用itertools中的permutations即可。 24 | 25 | ``` 26 | import itertools 27 | sum2=0 28 | a=[1,2,3,4] 29 | for i in itertools.permutations(a,3): 30 | print(i) 31 | sum2+=1 32 | print(sum2) 33 | 34 | ``` 35 | 36 | #### 实例002:“个税计算” 37 | **题目:**企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 38 | 39 | **程序分析:**分区间计算即可。 40 | 41 | ``` 42 | profit=int(input('Show me the money: ')) 43 | bonus=0 44 | thresholds=[100000,100000,200000,200000,400000] 45 | rates=[0.1,0.075,0.05,0.03,0.015,0.01] 46 | for i in range(len(thresholds)): 47 | if profit<=thresholds[i]: 48 | bonus+=profit*rates[i] 49 | profit=0 50 | break 51 | else: 52 | bonus+=thresholds[i]*rates[i] 53 | profit-=thresholds[i] 54 | bonus+=profit*rates[-1] 55 | print(bonus) 56 | ``` 57 | 58 | #### 实例003:完全平方数 59 | **题目:**一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 60 | 61 | **程序分析:**因为168对于指数爆炸来说实在太小了,所以可以直接省略数学分析,用最朴素的方法来获取上限: 62 | 63 | ``` 64 | n=0 65 | while (n+1)**2-n*n<=168: 66 | n+=1 67 | 68 | print(n+1) 69 | ---------- 70 | 71 | 85 72 | 73 | ``` 74 | 思路是:最坏的结果是n的平方与(n+1)的平方刚好差168,由于是平方的关系,不可能存在比这更大的间隙。 75 | 至于判断是否是完全平方数,最简单的方法是:平方根的值小数为0即可。 76 | 结合起来: 77 | 78 | ``` 79 | n=0 80 | while (n+1)**2-n*n<=168: 81 | n+=1 82 | 83 | for i in range((n+1)**2): 84 | if i**0.5==int(i**0.5) and (i+168)**0.5==int((i+168)**0.5): 85 | print(i-100) 86 | ``` 87 | 88 | #### 实例004:这天第几天 89 | 90 | **题目:**输入某年某月某日,判断这一天是这一年的第几天? 91 | 92 | **程序分析:**特殊情况,闰年时需考虑二月多加一天: 93 | 94 | ``` 95 | def isLeapYear(y): 96 | return (y%400==0 or (y%4==0 and y%100!=0)) 97 | DofM=[0,31,28,31,30,31,30,31,31,30,31,30] 98 | res=0 99 | year=int(input('Year:')) 100 | month=int(input('Month:')) 101 | day=int(input('day:')) 102 | if isLeapYear(year): 103 | DofM[2]+=1 104 | for i in range(month): 105 | res+=DofM[i] 106 | print(res+day) 107 | 108 | ``` 109 | 110 | #### 实例005:三数排序 111 | 112 | **题目:**输入三个整数x,y,z,请把这三个数由小到大输出。 113 | 114 | **程序分析:**练练手就随便找个排序算法实现一下,偷懒就直接调函数。 115 | 116 | ``` 117 | raw=[] 118 | for i in range(3): 119 | x=int(input('int%d: '%(i))) 120 | raw.append(x) 121 | 122 | for i in range(len(raw)): 123 | for j in range(i,len(raw)): 124 | if raw[i]>raw[j]: 125 | raw[i],raw[j]=raw[j],raw[i] 126 | print(raw) 127 | 128 | 129 | raw2=[] 130 | for i in range(3): 131 | x=int(input('int%d: '%(i))) 132 | raw2.append(x) 133 | print(sorted(raw2)) 134 | 135 | ``` 136 | 137 | #### 实例006:斐波那契数列 138 | 139 | **题目:**斐波那契数列。 140 | 141 | **程序分析:**斐波那契数列(Fibonacci sequence),从1,1开始,后面每一项等于前面两项之和。图方便就递归实现,图性能就用循环。 142 | 143 | ``` 144 | # 递归实现 145 | def Fib(n): 146 | return 1 if n<=2 else Fib(n-1)+Fib(n-2) 147 | print(Fib(int(input()))) 148 | 149 | # 朴素实现 150 | target=int(input()) 151 | res=0 152 | a,b=1,1 153 | for i in range(target-1): 154 | a,b=b,a+b 155 | print(a) 156 | 157 | ``` 158 | 159 | #### 实例007:copy 160 | 161 | **题目:**将一个列表的数据复制到另一个列表中。 162 | 163 | **程序分析:**使用列表[:],拿不准可以调用copy模块。 164 | 165 | ``` 166 | import copy 167 | a = [1,2,3,4,['a','b']] 168 | 169 | b = a # 赋值 170 | c = a[:] # 浅拷贝 171 | d = copy.copy(a) # 浅拷贝 172 | e = copy.deepcopy(a) # 深拷贝 173 | 174 | a.append(5) 175 | a[4].append('c') 176 | 177 | print('a=',a) 178 | print('b=',b) 179 | print('c=',c) 180 | print('d=',d) 181 | print('e=',e) 182 | 183 | ============ RESTART: F:\PyWorkspace\Python100\100examples\007.py ============ 184 | a= [1, 2, 3, 4, ['a', 'b', 'c'], 5] 185 | b= [1, 2, 3, 4, ['a', 'b', 'c'], 5] 186 | c= [1, 2, 3, 4, ['a', 'b', 'c']] 187 | d= [1, 2, 3, 4, ['a', 'b', 'c']] 188 | e= [1, 2, 3, 4, ['a', 'b']] 189 | ``` 190 | 191 | #### 实例008:九九乘法表 192 | 193 | **题目:**输出 9*9 乘法口诀表。 194 | 195 | **程序分析:**分行与列考虑,共9行9列,i控制行,j控制列。 196 | 197 | ``` 198 | for i in range(1,10): 199 | for j in range(1,i+1): 200 | print('%d*%d=%2ld '%(i,j,i*j),end='') 201 | print() 202 | ``` 203 | 204 | #### 实例009:暂停一秒输出 205 | 206 | **题目:**暂停一秒输出。 207 | 208 | **程序分析:**使用 time 模块的 sleep() 函数。 209 | 210 | ``` 211 | import time 212 | for i in range(4): 213 | print(str(int(time.time()))[-2:]) 214 | time.sleep(1) 215 | ``` 216 | 217 | #### 实例010:给人看的时间 218 | 219 | **题目:**暂停一秒输出,并格式化当前时间。 220 | 221 | **程序分析:**同009. 222 | 223 | ``` 224 | import time 225 | 226 | for i in range(4): 227 | print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))) 228 | time.sleep(1) 229 | ``` 230 | 231 | #### 实例011:养兔子 232 | 233 | **题目:**有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 234 | 235 | **程序分析:**我认为原文的解法有点扯,没有考虑3个月成熟的问题,人家还是婴儿怎么生孩子?考虑到三个月成熟,可以构建四个数据,其中:一月兔每个月长大成为二月兔,二月兔变三月兔,三月兔变成年兔,成年兔(包括新成熟的三月兔)生等量的一月兔。 236 | 237 | ``` 238 | month=int(input('繁殖几个月?: ')) 239 | month_1=1 240 | month_2=0 241 | month_3=0 242 | month_elder=0 243 | for i in range(month): 244 | month_1,month_2,month_3,month_elder=month_elder+month_3,month_1,month_2,month_elder+month_3 245 | print('第%d个月共'%(i+1),month_1+month_2+month_3+month_elder,'对兔子') 246 | print('其中1月兔:',month_1) 247 | print('其中2月兔:',month_2) 248 | print('其中3月兔:',month_3) 249 | print('其中成年兔:',month_elder) 250 | ``` 251 | 252 | #### 实例012:100到200的素数 253 | 254 | **题目:**判断101-200之间有多少个素数,并输出所有素数。 255 | 256 | **程序分析:**判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 257 | 258 | ``` 259 | import math 260 | for i in range(100,200): 261 | flag=0 262 | for j in range(2,round(math.sqrt(i))+1): 263 | if i%j==0: 264 | flag=1 265 | break 266 | if flag: 267 | continue 268 | print(i) 269 | 270 | 271 | print('\nSimplify the code with "else"\n') 272 | 273 | 274 | for i in range(100,200): 275 | for j in range(2,round(math.sqrt(i))+1): 276 | if i%j==0: 277 | break 278 | else: 279 | print(i) 280 | 281 | ``` 282 | 283 | #### 实例013:所有水仙花数 284 | 285 | **题目:**打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 286 | 287 | **程序分析:**利用for循环控制100-999个数,每个数分解出个位,十位,百位。 288 | 289 | ``` 290 | for i in range(100,1000): 291 | s=str(i) 292 | one=int(s[-1]) 293 | ten=int(s[-2]) 294 | hun=int(s[-3]) 295 | if i == one**3+ten**3+hun**3: 296 | print(i) 297 | ``` 298 | 299 | #### 实例014:分解质因数 300 | 301 | **题目:**将一个整数分解质因数。例如:输入90,打印出90=2*3*3*5。 302 | 303 | **程序分析:**根本不需要判断是否是质数,从2开始向数本身遍历,能整除的肯定是最小的质数。 304 | 305 | ``` 306 | target=int(input('输入一个整数:')) 307 | print(target,'= ',end='') 308 | 309 | if target<0: 310 | target=abs(target) 311 | print('-1*',end='') 312 | 313 | flag=0 314 | if target<=1: 315 | print(target) 316 | flag=1 317 | 318 | 319 | while True: 320 | if flag: 321 | break 322 | for i in range(2,int(target+1)): 323 | if target%i==0: 324 | print("%d"%i,end='') 325 | if target==i: 326 | flag=1 327 | break 328 | print('*',end='') 329 | target/=i 330 | break 331 | 332 | ``` 333 | 334 | #### 实例015:分数归档 335 | 336 | **题目:**利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 337 | 338 | **程序分析:**用条件判断即可。 339 | 340 | ``` 341 | points=int(input('输入分数:')) 342 | if points>=90: 343 | grade='A' 344 | elif points<60: 345 | grade='C' 346 | else: 347 | grade='B' 348 | print(grade) 349 | ``` 350 | 351 | #### 实例016:输出日期 352 | 353 | **题目:**输出指定格式的日期。 354 | 355 | **程序分析:**使用 datetime 模块。 356 | 357 | ``` 358 | import datetime 359 | print(datetime.date.today()) 360 | print(datetime.date(2333,2,3)) 361 | print(datetime.date.today().strftime('%d/%m/%Y')) 362 | day=datetime.date(1111,2,3) 363 | day=day.replace(year=day.year+22) 364 | print(day) 365 | ``` 366 | 367 | #### 实例017:字符串构成 368 | 369 | **题目:**输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 370 | 371 | **程序分析:**利用 while 或 for 语句,条件为输入的字符不为 '\n'。 372 | 373 | ``` 374 | string=input("输入字符串:") 375 | alp=0 376 | num=0 377 | spa=0 378 | oth=0 379 | for i in range(len(string)): 380 | if string[i].isspace(): 381 | spa+=1 382 | elif string[i].isdigit(): 383 | num+=1 384 | elif string[i].isalpha(): 385 | alp+=1 386 | else: 387 | oth+=1 388 | print('space: ',spa) 389 | print('digit: ',num) 390 | print('alpha: ',alp) 391 | print('other: ',oth) 392 | 393 | ``` 394 | 395 | #### 实例018:复读机相加 396 | 397 | **题目:**求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。 398 | 399 | **程序分析:**用字符串解决。 400 | 401 | ``` 402 | a=input('被加数字:') 403 | n=int(input('加几次?:')) 404 | res=0 405 | for i in range(n): 406 | res+=int(a) 407 | a+=a[0] 408 | print('结果是:',res) 409 | ``` 410 | 411 | #### 实例019:完数 412 | 413 | **题目:**一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。 414 | 415 | **程序分析:**将每一对因子加进集合,在这个过程中已经自动去重。最后的结果要求不计算其本身。 416 | 417 | ``` 418 | def factor(num): 419 | target=int(num) 420 | res=set() 421 | for i in range(1,num): 422 | if num%i==0: 423 | res.add(i) 424 | res.add(num/i) 425 | return res 426 | 427 | for i in range(2,1001): 428 | if i==sum(factor(i))-i: 429 | print(i) 430 | ``` 431 | 432 | #### 实例020:高空抛物 433 | 434 | **题目:**一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高? 435 | 436 | **程序分析:**无 437 | 438 | ``` 439 | high=200. 440 | total=100 441 | for i in range(10): 442 | high/=2 443 | total+=high 444 | print(high/2) 445 | print('总长:',total) 446 | ``` 447 | 448 | #### 实例021:猴子偷桃 449 | 450 | **题目:**猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 451 | 452 | **程序分析:**按规则反向推断:猴子有一个桃子,他偷来一个桃子,觉得不够又偷来了与手上等量的桃子,一共偷了9天。 453 | 454 | ``` 455 | peach=1 456 | for i in range(9): 457 | peach=(peach+1)*2 458 | print(peach) 459 | ``` 460 | 461 | #### 实例022:比赛对手 462 | 463 | **题目:**两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。 464 | 465 | **程序分析:**找到条件下不重复的三个对手即可。 466 | 467 | ``` 468 | a=set(['x','y','z']) 469 | b=set(['x','y','z']) 470 | c=set(['x','y','z']) 471 | c-=set(('x','z')) 472 | a-=set('x') 473 | for i in a: 474 | for j in b: 475 | for k in c: 476 | if len(set((i,j,k)))==3: 477 | print('a:%s,b:%s,c:%s'%(i,j,k)) 478 | ``` 479 | 480 | #### 实例023:画菱形 481 | 482 | **题目:**打印出如下图案(菱形): 483 | 484 | >     \* 485 | >    \*\*\* 486 | >   \*\*\*\*\* 487 | >  \*\*\*\*\*\*\* 488 | >   \*\*\*\*\* 489 | >    \*\*\* 490 | >     \* 491 | 492 | **程序分析:**递归调用即可。 493 | 494 | ``` 495 | def draw(num): 496 | a="*"*(2*(4-num)+1) 497 | print(a.center(9,' ')) 498 | if num!=1: 499 | draw(num-1) 500 | print(a.center(9,' ')) 501 | draw(4) 502 | ``` 503 | 504 | #### 实例024:斐波那契数列II 505 | 506 | **题目:**有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 507 | 508 | **程序分析:**就是斐波那契数列的后一项除以前一项。 509 | 510 | ``` 511 | a = 2.0 512 | b = 1.0 513 | s = 0 514 | for n in range(1,21): 515 | s += a / b 516 | a,b = a + b,a 517 | print (s) 518 | 519 | ``` 520 | 521 | #### 实例025: 阶乘求和 522 | 523 | **题目:**求1+2!+3!+...+20!的和。 524 | 525 | **程序分析:**1+2!+3!+...+20!=1+2(1+3(1+4(...20(1)))) 526 | 527 | ``` 528 | res=1 529 | for i in range(20,1,-1): 530 | res=i*res+1 531 | print(res) 532 | ``` 533 | 534 | #### 实例026:递归求阶乘 535 | 536 | **题目:**利用递归方法求5!。 537 | 538 | **程序分析:**递归调用即可。 539 | 540 | ``` 541 | def factorial(n): 542 | return n*factorial(n-1) if n>1 else 1 543 | print(factorial(5)) 544 | ``` 545 | 546 | #### 实例027:递归输出 547 | 548 | **题目:**利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。 549 | 550 | **程序分析:**递归真是蠢方法。 551 | 552 | ``` 553 | def rec(string): 554 | if len(string)!=1: 555 | rec(string[1:]) 556 | print(string[0],end='') 557 | 558 | rec(input('string here:')) 559 | ``` 560 | 561 | #### 实例028:递归求等差数列 562 | 563 | **题目:**有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大? 564 | 565 | **程序分析:**就一等差数列。 566 | 567 | ``` 568 | def age(n): 569 | if n==1: 570 | return 10 571 | return 2+age(n-1) 572 | print(age(5)) 573 | ``` 574 | 575 | #### 实例029:反向输出 576 | 577 | **题目:**给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。 578 | 579 | **程序分析:**学会分解出每一位数,用字符串的方法总是比较省事。 580 | 581 | ``` 582 | n=int(input('输入一个正整数:')) 583 | n=str(n) 584 | print('%d位数'%len(n)) 585 | print(n[::-1]) 586 | ``` 587 | 588 | #### 实例030:回文数 589 | 590 | **题目:**一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 591 | 592 | **程序分析:**用字符串比较方便,就算输入的不是数字都ok。 593 | 594 | ``` 595 | n=input("随便你输入啥啦:") 596 | a=0 597 | b=len(n)-1 598 | flag=True 599 | while a 1: 702 | for j in range(2,i): 703 | if (i % j) == 0: 704 | break 705 | else: 706 | print(i) 707 | ``` 708 | 709 | #### 实例037:排序 710 | 711 | **题目:**对10个数进行排序。 712 | 713 | **程序分析:**同实例005。 714 | 715 | ``` 716 | raw=[] 717 | for i in range(10): 718 | x=int(input('int%d: '%(i))) 719 | raw.append(x) 720 | 721 | for i in range(len(raw)): 722 | for j in range(i,len(raw)): 723 | if raw[i]>raw[j]: 724 | raw[i],raw[j]=raw[j],raw[i] 725 | print(raw) 726 | 727 | ``` 728 | 729 | #### 实例038:矩阵对角线之和 730 | 731 | **题目:**求一个3*3矩阵主对角线元素之和。 732 | 733 | **程序分析:**无。 734 | 735 | ``` 736 | mat=[[1,2,3], 737 | [3,4,5], 738 | [4,5,6] 739 | ] 740 | res=0 741 | for i in range(len(mat)): 742 | res+=mat[i][i] 743 | print(res) 744 | ``` 745 | 746 | #### 实例039:有序列表插入元素 747 | 748 | **题目:**有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 749 | 750 | **程序分析:**首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。 751 | 752 | ``` 753 | lis=[1,10,100,1000,10000,100000] 754 | n=int(input('insert a number: ')) 755 | lis.append(n) 756 | for i in range(len(lis)-1): 757 | if lis[i]>=n: 758 | for j in range(i,len(lis)): 759 | lis[j],lis[-1]=lis[-1],lis[j] 760 | break 761 | print(lis) 762 | ``` 763 | 764 | #### 实例040:逆序列表 765 | 766 | **题目:**将一个数组逆序输出。 767 | 768 | **程序分析:**依次交换位置,或者直接调用reverse方法。 769 | 770 | ``` 771 | lis=[1,10,100,1000,10000,100000] 772 | for i in range(int(len(lis)/2)): 773 | lis[i],lis[len(lis)-1-i]=lis[len(lis)-1-i],lis[i] 774 | print('第一种实现:') 775 | print(lis) 776 | 777 | 778 | lis=[1,10,100,1000,10000,100000] 779 | print('第二种实现:') 780 | lis.reverse() 781 | print(lis) 782 | 783 | ``` 784 | 785 | #### 实例041:类的方法与变量 786 | 787 | **题目:**模仿静态变量的用法。 788 | 789 | **程序分析:**构造类,了解类的方法与变量。 790 | 791 | ``` 792 | def dummy(): 793 | i=0 794 | print(i) 795 | i+=1 796 | 797 | class cls: 798 | i=0 799 | def dummy(self): 800 | print(self.i) 801 | self.i+=1 802 | 803 | a=cls() 804 | for i in range(50): 805 | dummy() 806 | a.dummy() 807 | ``` 808 | 809 | #### 实例042:变量作用域 810 | 811 | **题目:**学习使用auto定义变量的用法。 812 | 813 | **程序分析:**python中的变量作用域。 814 | 815 | ``` 816 | i=0 817 | n=0 818 | def dummy(): 819 | i=0 820 | print(i) 821 | i+=1 822 | def dummy2(): 823 | global n 824 | print(n) 825 | n+=1 826 | print('函数内部的同名变量') 827 | for j in range(20): 828 | print(i) 829 | dummy() 830 | i+=1 831 | print('global声明同名变量') 832 | for k in range(20): 833 | print(n) 834 | dummy2() 835 | n+=10 836 | ``` 837 | 838 | #### 实例043:作用域、类的方法与变量 839 | 840 | **题目:**模仿静态变量(static)另一案例。 841 | 842 | **程序分析:**综合实例041和实例042。 843 | 844 | ``` 845 | class dummy: 846 | num=1 847 | def Num(self): 848 | print('class dummy num:',self.num) 849 | print('global num: ',num) 850 | self.num+=1 851 | 852 | n=dummy() 853 | num=1 854 | for i in range(5): 855 | num*=10 856 | n.Num() 857 | ``` 858 | 859 | #### 实例044:矩阵相加 860 | 861 | **题目:**计算两个矩阵相加。 862 | 863 | **程序分析:**创建一个新的矩阵,使用 for 迭代并取出 X 和 Y 矩阵中对应位置的值,相加后放到新矩阵的对应位置中。 864 | 865 | ``` 866 | X = [[12,7,3], 867 | [4 ,5,6], 868 | [7 ,8,9]] 869 | 870 | Y = [[5,8,1], 871 | [6,7,3], 872 | [4,5,9]] 873 | 874 | res=[[0,0,0], 875 | [0,0,0], 876 | [0,0,0]] 877 | for i in range(len(res)): 878 | for j in range(len(res[0])): 879 | res[i][j]=X[i][j]+Y[i][j] 880 | print(res) 881 | 882 | ``` 883 | 884 | #### 实例045:求和 885 | 886 | **题目:**统计 1 到 100 之和。 887 | 888 | **程序分析:**无 889 | 890 | ``` 891 | res=0 892 | for i in range(1,101): 893 | res+=i 894 | print(res) 895 | ``` 896 | 897 | #### 实例046:打破循环 898 | 899 | **题目:**求输入数字的平方,如果平方运算后小于 50 则退出。 900 | 901 | **程序分析:**无 902 | 903 | ``` 904 | while True: 905 | try: 906 | n=float(input('输入一个数字:')) 907 | except: 908 | print('输入错误') 909 | continue 910 | dn=n**2 911 | print('其平方为:',dn) 912 | if dn<50: 913 | print('平方小于50,退出') 914 | break 915 | ``` 916 | 917 | #### 实例047:函数交换变量 918 | 919 | **题目:**两个变量值用函数互换。 920 | 921 | **程序分析:**无 922 | 923 | ``` 924 | def exc(a,b): 925 | return (b,a) 926 | a=0 927 | b=10 928 | a,b=exc(a,b) 929 | print(a,b) 930 | ``` 931 | 932 | #### 实例048:数字比大小 933 | 934 | **题目:**数字比较。 935 | 936 | **程序分析:**无 937 | 938 | ``` 939 | a=int(input('a=')) 940 | b=int(input('b=')) 941 | if ab: 944 | print('a>b') 945 | else: 946 | print('a=b') 947 | ``` 948 | 949 | #### 实例049:lambda 950 | 951 | **题目:**使用lambda来创建匿名函数。 952 | 953 | **程序分析:**无 954 | 955 | ``` 956 | Max=lambda x,y:x*(x>=y)+y*(y>x) 957 | Min=lambda x,y:x*(x<=y)+y*(y>4 1032 | d=c&b 1033 | print('a:',bin(a)) 1034 | print('b:',bin(b)) 1035 | print('c:',bin(c)) 1036 | print('d:',bin(d)) 1037 | ``` 1038 | 1039 | #### 实例055:按位取反 1040 | 1041 | **题目:**学习使用按位取反~。 1042 | 1043 | **程序分析:**~0=1; ~1=0; 1044 | 1045 | ``` 1046 | print(~234) 1047 | print(~~234) 1048 | ``` 1049 | 1050 | #### 实例056:画圈 1051 | 1052 | **题目:**画图,学用circle画圆形。    1053 | 1054 | **程序分析:**无。 1055 | 1056 | ``` 1057 | from tkinter import * 1058 | canvas=Canvas(width=800,height=600,bg='yellow') 1059 | canvas.pack(expand=YES,fill=BOTH) 1060 | k=1 1061 | j=1 1062 | for i in range(26): 1063 | canvas.create_oval(310-k,250-k,310+k,250+k,width=1) 1064 | k+=j 1065 | j+=0.3 1066 | mainloop() 1067 | ``` 1068 | 1069 | #### 实例057:画线 1070 | 1071 | **题目:**画图,学用line画直线。 1072 | 1073 | **程序分析:**无。 1074 | 1075 | ``` 1076 | if __name__ == '__main__': 1077 | from tkinter import * 1078 | 1079 | canvas = Canvas(width=300, height=300, bg='green') 1080 | canvas.pack(expand=YES, fill=BOTH) 1081 | x0 = 263 1082 | y0 = 263 1083 | y1 = 275 1084 | x1 = 275 1085 | for i in range(19): 1086 | canvas.create_line(x0,y0,x0,y1, width=1, fill='red') 1087 | x0 = x0 - 5 1088 | y0 = y0 - 5 1089 | x1 = x1 + 5 1090 | y1 = y1 + 5 1091 | 1092 | x0 = 263 1093 | y1 = 275 1094 | y0 = 263 1095 | for i in range(21): 1096 | canvas.create_line(x0,y0,x0,y1,fill = 'red') 1097 | x0 += 5 1098 | y0 += 5 1099 | y1 += 5 1100 | 1101 | mainloop() 1102 | ``` 1103 | 1104 | #### 实例058:画矩形 1105 | 1106 | **题目:**画图,学用rectangle画方形。    1107 | 1108 | **程序分析:**无。 1109 | 1110 | ``` 1111 | if __name__ == '__main__': 1112 | from tkinter import * 1113 | root = Tk() 1114 | root.title('Canvas') 1115 | canvas = Canvas(root,width = 400,height = 400,bg = 'yellow') 1116 | x0 = 263 1117 | y0 = 263 1118 | y1 = 275 1119 | x1 = 275 1120 | for i in range(19): 1121 | canvas.create_rectangle(x0,y0,x1,y1) 1122 | x0 -= 5 1123 | y0 -= 5 1124 | x1 += 5 1125 | y1 += 5 1126 | 1127 | canvas.pack() 1128 | root.mainloop() 1129 | ``` 1130 | 1131 | #### 实例059:画图(丑) 1132 | 1133 | **题目:**画图,综合例子。   1134 | 1135 | **程序分析:**丑。 1136 | 1137 | ``` 1138 | if __name__ == '__main__': 1139 | from tkinter import * 1140 | canvas = Canvas(width = 300,height = 300,bg = 'green') 1141 | canvas.pack(expand = YES,fill = BOTH) 1142 | x0 = 150 1143 | y0 = 100 1144 | canvas.create_oval(x0 - 10,y0 - 10,x0 + 10,y0 + 10) 1145 | canvas.create_oval(x0 - 20,y0 - 20,x0 + 20,y0 + 20) 1146 | canvas.create_oval(x0 - 50,y0 - 50,x0 + 50,y0 + 50) 1147 | import math 1148 | B = 0.809 1149 | for i in range(16): 1150 | a = 2 * math.pi / 16 * i 1151 | x = math.ceil(x0 + 48 * math.cos(a)) 1152 | y = math.ceil(y0 + 48 * math.sin(a) * B) 1153 | canvas.create_line(x0,y0,x,y,fill = 'red') 1154 | canvas.create_oval(x0 - 60,y0 - 60,x0 + 60,y0 + 60) 1155 | 1156 | 1157 | for k in range(501): 1158 | for i in range(17): 1159 | a = (2 * math.pi / 16) * i + (2 * math.pi / 180) * k 1160 | x = math.ceil(x0 + 48 * math.cos(a)) 1161 | y = math.ceil(y0 + 48 + math.sin(a) * B) 1162 | canvas.create_line(x0,y0,x,y,fill = 'red') 1163 | for j in range(51): 1164 | a = (2 * math.pi / 16) * i + (2* math.pi / 180) * k - 1 1165 | x = math.ceil(x0 + 48 * math.cos(a)) 1166 | y = math.ceil(y0 + 48 * math.sin(a) * B) 1167 | canvas.create_line(x0,y0,x,y,fill = 'red') 1168 | mainloop() 1169 | ``` 1170 | 1171 | #### 实例060:字符串长度 1172 | 1173 | **题目:**计算字符串长度。   1174 | 1175 | **程序分析:**无。 1176 | 1177 | ``` 1178 | s='zhangguang101' 1179 | print(len(s)) 1180 | ``` 1181 | 1182 | #### 实例061:杨辉三角 1183 | 1184 | **题目:**打印出杨辉三角形前十行。   1185 | 1186 | **程序分析:**无。 1187 | 1188 | ``` 1189 | def generate(numRows): 1190 | r = [[1]] 1191 | for i in range(1,numRows): 1192 | r.append(list(map(lambda x,y:x+y, [0]+r[-1],r[-1]+[0]))) 1193 | return r[:numRows] 1194 | a=generate(10) 1195 | for i in a: 1196 | print(i) 1197 | ``` 1198 | 1199 | #### 实例062:查找字符串 1200 | 1201 | **题目:**查找字符串。   1202 | 1203 | **程序分析:**无。 1204 | 1205 | ``` 1206 | s1='aabbxuebixuebi' 1207 | s2='ab' 1208 | s3='xue' 1209 | print(s1.find(s2)) 1210 | print(s1.find(s3)) 1211 | ``` 1212 | 1213 | #### 实例063:画椭圆 1214 | 1215 | **题目:**画椭圆。  1216 | 1217 | **程序分析:**使用 tkinter。 1218 | 1219 | ``` 1220 | if __name__ == '__main__': 1221 | from tkinter import * 1222 | x = 360 1223 | y = 160 1224 | top = y - 30 1225 | bottom = y - 30 1226 | 1227 | canvas = Canvas(width = 400,height = 600,bg = 'white') 1228 | for i in range(20): 1229 | canvas.create_oval(250 - top,250 - bottom,250 + top,250 + bottom) 1230 | top -= 5 1231 | bottom += 5 1232 | canvas.pack() 1233 | mainloop() 1234 | ``` 1235 | 1236 | #### 实例64:画椭圆、矩形 1237 | 1238 | **题目:**利用ellipse 和 rectangle 画图。。  1239 | 1240 | **程序分析:**无。 1241 | 1242 | ``` 1243 | if __name__ == '__main__': 1244 | from tkinter import * 1245 | canvas = Canvas(width = 400,height = 600,bg = 'white') 1246 | left = 20 1247 | right = 50 1248 | top = 50 1249 | num = 15 1250 | for i in range(num): 1251 | canvas.create_oval(250 - right,250 - left,250 + right,250 + left) 1252 | canvas.create_oval(250 - 20,250 - top,250 + 20,250 + top) 1253 | canvas.create_rectangle(20 - 2 * i,20 - 2 * i,10 * (i + 2),10 * ( i + 2)) 1254 | right += 5 1255 | left += 5 1256 | top += 10 1257 | 1258 | canvas.pack() 1259 | mainloop() 1260 | ``` 1261 | 1262 | #### 实例065:画组合图形 1263 | 1264 | **题目:**一个最优美的图案。   1265 | 1266 | **程序分析:**无。 1267 | 1268 | ``` 1269 | import math 1270 | from tkinter import * 1271 | 1272 | class PTS: 1273 | def __init__(self): 1274 | self.x = 0 1275 | self.y = 0 1276 | points = [] 1277 | 1278 | def LineToDemo(): 1279 | screenx = 400 1280 | screeny = 400 1281 | canvas = Canvas(width = screenx,height = screeny,bg = 'white') 1282 | 1283 | AspectRatio = 0.85 1284 | MAXPTS = 15 1285 | h = screeny 1286 | w = screenx 1287 | xcenter = w / 2 1288 | ycenter = h / 2 1289 | radius = (h - 30) / (AspectRatio * 2) - 20 1290 | step = 360 / MAXPTS 1291 | angle = 0.0 1292 | for i in range(MAXPTS): 1293 | rads = angle * math.pi / 180.0 1294 | p = PTS() 1295 | p.x = xcenter + int(math.cos(rads) * radius) 1296 | p.y = ycenter - int(math.sin(rads) * radius * AspectRatio) 1297 | angle += step 1298 | points.append(p) 1299 | canvas.create_oval(xcenter - radius,ycenter - radius, 1300 | xcenter + radius,ycenter + radius) 1301 | for i in range(MAXPTS): 1302 | for j in range(i,MAXPTS): 1303 | canvas.create_line(points[i].x,points[i].y,points[j].x,points[j].y) 1304 | 1305 | canvas.pack() 1306 | mainloop() 1307 | if __name__ == '__main__': 1308 | LineToDemo() 1309 | ``` 1310 | 1311 | #### 实例066:三数排序 1312 | 1313 | **题目:**输入3个数a,b,c,按大小顺序输出。    1314 | 1315 | **程序分析:**同实例005。 1316 | 1317 | ``` 1318 | raw=[] 1319 | for i in range(3): 1320 | x=int(input('int%d: '%(i))) 1321 | raw.append(x) 1322 | 1323 | for i in range(len(raw)): 1324 | for j in range(i,len(raw)): 1325 | if raw[i]>raw[j]: 1326 | raw[i],raw[j]=raw[j],raw[i] 1327 | print(raw) 1328 | 1329 | 1330 | raw2=[] 1331 | for i in range(3): 1332 | x=int(input('int%d: '%(i))) 1333 | raw2.append(x) 1334 | print(sorted(raw2)) 1335 | 1336 | ``` 1337 | 1338 | #### 实例067:交换位置 1339 | 1340 | **题目:**输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。 1341 | 1342 | **程序分析:**无。 1343 | 1344 | ``` 1345 | li=[3,2,5,7,8,1,5] 1346 | 1347 | li[-1],li[li.index(min(li))]=li[li.index(min(li))],li[-1] 1348 | 1349 | m=li[0] 1350 | ind=li.index(max(li)) 1351 | li[0]=li[ind] 1352 | li[ind]=m 1353 | 1354 | print(li) 1355 | ``` 1356 | 1357 | #### 实例068:旋转数列 1358 | 1359 | **题目:**有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数 1360 | 1361 | **程序分析:**无。 1362 | 1363 | ``` 1364 | from collections import * 1365 | li=[1,2,3,4,5,6,7,8,9] 1366 | deq=deque(li,maxlen=len(li)) 1367 | print(li) 1368 | deq.rotate(int(input('rotate:'))) 1369 | print(list(deq)) 1370 | ``` 1371 | 1372 | #### 实例069:报数 1373 | 1374 | **题目:**有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 1375 | 1376 | **程序分析:**无。 1377 | 1378 | ``` 1379 | if __name__ == '__main__': 1380 | nmax = 50 1381 | n = int(input('请输入总人数:')) 1382 | num = [] 1383 | for i in range(n): 1384 | num.append(i + 1) 1385 | 1386 | i = 0 1387 | k = 0 1388 | m = 0 1389 | 1390 | while m < n - 1: 1391 | if num[i] != 0 : k += 1 1392 | if k == 3: 1393 | num[i] = 0 1394 | k = 0 1395 | m += 1 1396 | i += 1 1397 | if i == n : i = 0 1398 | 1399 | i = 0 1400 | while num[i] == 0: i += 1 1401 | print(num[i]) 1402 | ``` 1403 | 1404 | 1405 | #### 实例070:字符串长度II 1406 | 1407 | **题目:**写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。 1408 | 1409 | **程序分析:**无。 1410 | 1411 | ``` 1412 | def lenofstr(s): 1413 | return len(s) 1414 | 1415 | print(lenofstr('tanxiaofengsheng')) 1416 | ``` 1417 | 1418 | #### 实例071:输入和输出 1419 | 1420 | **题目:**编写input()和output()函数输入,输出5个学生的数据记录。 1421 | 1422 | **程序分析:**无。 1423 | 1424 | ``` 1425 | N = 3 1426 | #stu 1427 | # num : string 1428 | # name : string 1429 | # score[4]: list 1430 | student = [] 1431 | for i in range(5): 1432 | student.append(['','',[]]) 1433 | 1434 | def input_stu(stu): 1435 | for i in range(N): 1436 | stu[i][0] = input('input student num:\n') 1437 | stu[i][1] = input('input student name:\n') 1438 | for j in range(3): 1439 | stu[i][2].append(int(input('score:\n'))) 1440 | 1441 | def output_stu(stu): 1442 | for i in range(N): 1443 | print ('%-6s%-10s' % ( stu[i][0],stu[i][1] )) 1444 | for j in range(3): 1445 | print ('%-8d' % stu[i][2][j]) 1446 | 1447 | if __name__ == '__main__': 1448 | input_stu(student) 1449 | print (student) 1450 | output_stu(student) 1451 | ``` 1452 | 1453 | #### 实例072:创建链表 1454 | 1455 | **题目:**创建一个链表。 1456 | 1457 | **程序分析:**原文不太靠谱。 1458 | 1459 | ``` 1460 | class Node: 1461 | 1462 | def __init__(self, data): 1463 | self.data = data 1464 | self.next = None 1465 | 1466 | def get_data(self): 1467 | return self.data 1468 | 1469 | class List: 1470 | 1471 | def __init__(self, head): 1472 | self.head = head 1473 | 1474 | def is_empty(self): 1475 | return self.get_len() == 0 1476 | 1477 | def get_len(self): 1478 | length = 0 1479 | temp = self.head 1480 | while temp is not None: 1481 | length += 1 1482 | temp = temp.next 1483 | return length 1484 | 1485 | def append(self, node): 1486 | temp = self.head 1487 | while temp.next is not None: 1488 | temp = temp.next 1489 | temp.next = node 1490 | 1491 | def delete(self, index): 1492 | if index < 1 or index > self.get_len(): 1493 | print("给定位置不合理") 1494 | return 1495 | if index == 1: 1496 | self.head = self.head.next 1497 | return 1498 | temp = self.head 1499 | cur_pos = 0 1500 | while temp is not None: 1501 | cur_pos += 1 1502 | if cur_pos == index-1: 1503 | temp.next = temp.next.next 1504 | temp = temp.next 1505 | 1506 | def insert(self, pos, node): 1507 | if pos < 1 or pos > self.get_len(): 1508 | print("插入结点位置不合理") 1509 | return 1510 | temp = self.head 1511 | cur_pos = 0 1512 | while temp is not Node: 1513 | cur_pos += 1 1514 | if cur_pos == pos-1: 1515 | node.next = temp.next 1516 | temp.next =node 1517 | break 1518 | temp = temp.next 1519 | 1520 | def reverse(self, head): 1521 | if head is None and head.next is None: 1522 | return head 1523 | pre = head 1524 | cur = head.next 1525 | while cur is not None: 1526 | temp = cur.next 1527 | cur.next = pre 1528 | pre = cur 1529 | cur = temp 1530 | head.next = None 1531 | return pre 1532 | 1533 | def print_list(self, head): 1534 | init_data = [] 1535 | while head is not None: 1536 | init_data.append(head.get_data()) 1537 | head = head.next 1538 | return init_data 1539 | 1540 | if __name__=='__main__': 1541 | head=Node('head') 1542 | link=List(head) 1543 | for i in range(10): 1544 | node=Node(i) 1545 | link.append(node) 1546 | print(link.print_list(head)) 1547 | ``` 1548 | 1549 | #### 实例073:反向输出链表 1550 | 1551 | **题目:**反向输出一个链表。 1552 | 1553 | **程序分析:**无。 1554 | 1555 | ``` 1556 | class Node: 1557 | 1558 | def __init__(self, data): 1559 | self.data = data 1560 | self.next = None 1561 | 1562 | def get_data(self): 1563 | return self.data 1564 | 1565 | class List: 1566 | 1567 | def __init__(self, head): 1568 | self.head = head 1569 | 1570 | def is_empty(self): 1571 | return self.get_len() == 0 1572 | 1573 | def get_len(self): 1574 | length = 0 1575 | temp = self.head 1576 | while temp is not None: 1577 | length += 1 1578 | temp = temp.next 1579 | return length 1580 | 1581 | def append(self, node): 1582 | temp = self.head 1583 | while temp.next is not None: 1584 | temp = temp.next 1585 | temp.next = node 1586 | 1587 | def delete(self, index): 1588 | if index < 1 or index > self.get_len(): 1589 | print("给定位置不合理") 1590 | return 1591 | if index == 1: 1592 | self.head = self.head.next 1593 | return 1594 | temp = self.head 1595 | cur_pos = 0 1596 | while temp is not None: 1597 | cur_pos += 1 1598 | if cur_pos == index-1: 1599 | temp.next = temp.next.next 1600 | temp = temp.next 1601 | 1602 | def insert(self, pos, node): 1603 | if pos < 1 or pos > self.get_len(): 1604 | print("插入结点位置不合理") 1605 | return 1606 | temp = self.head 1607 | cur_pos = 0 1608 | while temp is not Node: 1609 | cur_pos += 1 1610 | if cur_pos == pos-1: 1611 | node.next = temp.next 1612 | temp.next =node 1613 | break 1614 | temp = temp.next 1615 | 1616 | def reverse(self, head): 1617 | if head is None and head.next is None: 1618 | return head 1619 | pre = head 1620 | cur = head.next 1621 | while cur is not None: 1622 | temp = cur.next 1623 | cur.next = pre 1624 | pre = cur 1625 | cur = temp 1626 | head.next = None 1627 | return pre 1628 | 1629 | def print_list(self, head): 1630 | init_data = [] 1631 | while head is not None: 1632 | init_data.append(head.get_data()) 1633 | head = head.next 1634 | return init_data 1635 | 1636 | if __name__=='__main__': 1637 | head=Node('head') 1638 | link=List(head) 1639 | for i in range(10): 1640 | node=Node(i) 1641 | link.append(node) 1642 | print(link.print_list(head)) 1643 | print(link.print_list(link.reverse(head))) 1644 | ``` 1645 | 1646 | #### 实例074:列表排序、连接 1647 | 1648 | **题目:**列表排序及连接。 1649 | 1650 | **程序分析:**排序可使用 sort() 方法,连接可以使用 + 号或 extend() 方法。 1651 | 1652 | ``` 1653 | a=[2,6,8] 1654 | b=[7,0,4] 1655 | a.extend(b) 1656 | a.sort() 1657 | print(a) 1658 | ``` 1659 | 1660 | #### 实例075:不知所云 1661 | 1662 | **题目:**放松一下,算一道简单的题目。 1663 | 1664 | **程序分析:**鬼知道是什么。 1665 | 1666 | ``` 1667 | if __name__ == '__main__': 1668 | for i in range(5): 1669 | n = 0 1670 | if i != 1: n += 1 1671 | if i == 3: n += 1 1672 | if i == 4: n += 1 1673 | if i != 4: n += 1 1674 | if n == 3: print (64 + i) 1675 | ``` 1676 | 1677 | #### 实例076:做函数 1678 | 1679 | **题目:**编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n 1680 | 1681 | **程序分析:**无。 1682 | 1683 | ``` 1684 | def peven(n): 1685 | i = 0 1686 | s = 0.0 1687 | for i in range(2,n + 1,2): 1688 | s += 1.0 / i 1689 | return s 1690 | 1691 | def podd(n): 1692 | s = 0.0 1693 | for i in range(1, n + 1,2): 1694 | s += 1.0 / i 1695 | return s 1696 | 1697 | def dcall(fp,n): 1698 | s = fp(n) 1699 | return s 1700 | 1701 | if __name__ == '__main__': 1702 | n = int(input('input a number: ')) 1703 | if n % 2 == 0: 1704 | sum = dcall(peven,n) 1705 | else: 1706 | sum = dcall(podd,n) 1707 | print (sum) 1708 | ``` 1709 | 1710 | #### 实例077:遍历列表 1711 | 1712 | **题目:**循环输出列表 1713 | 1714 | **程序分析:**无。 1715 | 1716 | ``` 1717 | l=['moyu','niupi','xuecaibichi','shengfaji','42'] 1718 | for i in range(len(l)): 1719 | print(l[i]) 1720 | ``` 1721 | 1722 | #### 实例078:字典 1723 | 1724 | **题目:**找到年龄最大的人,并输出。请找出程序中有什么问题。 1725 | 1726 | **程序分析:**无。 1727 | 1728 | ``` 1729 | if __name__ == '__main__': 1730 | person = {"li":18,"wang":50,"zhang":20,"sun":22} 1731 | m = 'li' 1732 | for key in person.keys(): 1733 | if person[m] < person[key]: 1734 | m = key 1735 | 1736 | print ('%s,%d' % (m,person[m])) 1737 | ``` 1738 | 1739 | #### 实例079:字符串排序 1740 | 1741 | **题目:**字符串排序。 1742 | 1743 | **程序分析:**无。 1744 | 1745 | ``` 1746 | l=['baaa','aaab','aaba','aaaa','abaa'] 1747 | l.sort() 1748 | print(l) 1749 | ``` 1750 | 1751 | #### 实例080:猴子分桃 1752 | 1753 | **题目:**海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子? 1754 | 1755 | **程序分析:**无。 1756 | 1757 | ``` 1758 | if __name__ == '__main__': 1759 | i = 0 1760 | j = 1 1761 | x = 0 1762 | while (i < 5) : 1763 | x = 4 * j 1764 | for i in range(0,5) : 1765 | if(x%4 != 0) : 1766 | break 1767 | else : 1768 | i += 1 1769 | x = (x/4) * 5 +1 1770 | j += 1 1771 | print(x) 1772 | 1773 | for p in range(5): 1774 | x=(x-1)/5*4 1775 | print(x) 1776 | ``` 1777 | 1778 | #### 实例081:求未知数 1779 | 1780 | **题目:**809*??=800*??+9*?? 其中??代表的两位数, 809*??为四位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。 1781 | 1782 | **程序分析:**无。 1783 | 1784 | ``` 1785 | a = 809 1786 | for i in range(10,100): 1787 | b = i * a 1788 | if b >= 1000 and b <= 10000 and 8 * i < 100 and 9 * i >= 100: 1789 | print(b,' = 800 * ', i, ' + 9 * ', i) 1790 | 1791 | 1792 | for i in range(10,100): 1793 | if 8*i>99 or 9*i<100: 1794 | continue 1795 | if 809*i==800*i+9*i: 1796 | print(i) 1797 | break 1798 | ``` 1799 | 1800 | 1801 | #### 实例082:八进制转十进制 1802 | 1803 | **题目:**八进制转换为十进制 1804 | 1805 | **程序分析:**无。 1806 | 1807 | ``` 1808 | n=eval('0o'+str(int(input('八进制输入:')))) 1809 | print(n) 1810 | ``` 1811 | 1812 | #### 实例083:制作奇数 1813 | 1814 | **题目:**求0—7所能组成的奇数个数。 1815 | 1816 | **程序分析:** 1817 | 1818 | 组成1位数是4个。1,3,5,7结尾 1819 | 1820 | 组成2位数是7*4个。第一位不能为0 1821 | 1822 | 组成3位数是7*8*4个。中间随意 1823 | 1824 | 组成4位数是7*8*8*4个。 1825 | 1826 | ``` 1827 | if __name__ == '__main__': 1828 | sum = 4 1829 | s = 4 1830 | for j in range(2,9): 1831 | print (sum) 1832 | if j <= 2: 1833 | s *= 7 1834 | else: 1835 | s *= 8 1836 | sum += s 1837 | print('sum = %d' % sum) 1838 | ``` 1839 | 1840 | #### 实例084:连接字符串 1841 | 1842 | **题目:**连接字符串。 1843 | 1844 | **程序分析:**无。 1845 | 1846 | ``` 1847 | delimiter = ',' 1848 | mylist = ['Brazil', 'Russia', 'India', 'China'] 1849 | print(delimiter.join(mylist)) 1850 | ``` 1851 | 1852 | #### 实例085:整除 1853 | 1854 | **题目:**输入一个奇数,然后判断最少几个 9 除于该数的结果为整数。 1855 | 1856 | **程序分析:**999999 / 13 = 76923。 1857 | 1858 | ``` 1859 | if __name__ == '__main__': 1860 | zi = int(input('输入一个数字:')) 1861 | n1 = 1 1862 | c9 = 1 1863 | m9 = 9 1864 | sum = 9 1865 | while n1 != 0: 1866 | if sum % zi == 0: 1867 | n1 = 0 1868 | else: 1869 | m9 *= 10 1870 | sum += m9 1871 | c9 += 1 1872 | print ('%d 个 9 可以被 %d 整除 : %d' % (c9,zi,sum)) 1873 | r = sum / zi 1874 | print ('%d / %d = %d' % (sum,zi,r)) 1875 | ``` 1876 | 1877 | #### 实例086:连接字符串II 1878 | 1879 | **题目:**两个字符串连接程序。 1880 | 1881 | **程序分析:**无。 1882 | 1883 | ``` 1884 | a='guangtou' 1885 | b='feipang' 1886 | print(b+a) 1887 | ``` 1888 | 1889 | #### 实例087:访问类成员 1890 | 1891 | **题目:**回答结果(结构体变量传递)。 1892 | 1893 | **程序分析:**无。 1894 | 1895 | ``` 1896 | if __name__ == '__main__': 1897 | class student: 1898 | x = 0 1899 | c = 0 1900 | def f(stu): 1901 | stu.x = 20 1902 | stu.c = 'c' 1903 | a= student() 1904 | a.x = 3 1905 | a.c = 'a' 1906 | f(a) 1907 | print(a.x,a.c) 1908 | ``` 1909 | 1910 | #### 实例088:打印星号 1911 | 1912 | **题目:**读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。 1913 | 1914 | **程序分析:**无。 1915 | 1916 | ``` 1917 | for i in range(3): 1918 | print('*'*int(input('input a number: '))) 1919 | ``` 1920 | 1921 | #### 实例089:解码 1922 | 1923 | **题目:**某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。 1924 | 1925 | **程序分析:**无。 1926 | 1927 | ``` 1928 | n=input() 1929 | n = str(n) 1930 | a=[] 1931 | for i in range(4): 1932 | a.append((int(n[i])+5)%10) 1933 | a[0],a[3]=a[3],a[0] 1934 | a[1],a[2]=a[2],a[1] 1935 | print ("".join('%s' %s for s in a)) 1936 | 1937 | ``` 1938 | 1939 | #### 实例090:列表详解 1940 | 1941 | **题目:**列表使用实例。 1942 | 1943 | **程序分析:**无。 1944 | 1945 | ``` 1946 | #list 1947 | #新建列表 1948 | testList=[10086,'中国移动',[1,2,4,5]] 1949 | 1950 | #访问列表长度 1951 | print (len(testList) ) 1952 | #到列表结尾 1953 | print (testList[1:]) 1954 | #向列表添加元素 1955 | testList.append('i\'m new here!') 1956 | 1957 | print (len(testList) ) 1958 | print (testList[-1] ) 1959 | #弹出列表的最后一个元素 1960 | print (testList.pop(1) ) 1961 | print (len(testList) ) 1962 | print (testList ) 1963 | #list comprehension 1964 | #后面有介绍,暂时掠过 1965 | matrix = [[1, 2, 3], 1966 | [4, 5, 6], 1967 | [7, 8, 9]] 1968 | print (matrix ) 1969 | print (matrix[1] ) 1970 | col2 = [row[1] for row in matrix]#get a column from a matrix 1971 | print (col2 ) 1972 | col2even = [row[1] for row in matrix if row[1] % 2 == 0]#filter odd item 1973 | print (col2even) 1974 | ``` 1975 | 1976 | #### 实例091:time模块 1977 | 1978 | **题目:**时间函数举例1。 1979 | 1980 | **程序分析:**无。 1981 | 1982 | ``` 1983 | if __name__ == '__main__': 1984 | import time 1985 | print (time.ctime(time.time())) 1986 | print (time.asctime(time.localtime(time.time()))) 1987 | print (time.asctime(time.gmtime(time.time()))) 1988 | ``` 1989 | 1990 | #### 实例092:time模块II 1991 | 1992 | **题目:**时间函数举例2。 1993 | 1994 | **程序分析:**如何浪费时间。 1995 | 1996 | ``` 1997 | if __name__ == '__main__': 1998 | import time 1999 | start = time.time() 2000 | for i in range(3000): 2001 | print(i) 2002 | end = time.time() 2003 | 2004 | print (end - start) 2005 | ``` 2006 | 2007 | #### 实例093:time模块III 2008 | 2009 | **题目:**时间函数举例3。 2010 | 2011 | **程序分析:**如何浪费时间。 2012 | 2013 | ``` 2014 | if __name__ == '__main__': 2015 | import time 2016 | start = time.clock() 2017 | for i in range(100): 2018 | print(i) 2019 | end = time.clock() 2020 | print('different is %6.3f' % (end - start)) 2021 | ``` 2022 | 2023 | #### 实例094:time模块IV 2024 | 2025 | **题目:**时间函数举例4。 2026 | 2027 | **程序分析:**如何浪费时间。 2028 | 2029 | ``` 2030 | if __name__ == '__main__': 2031 | import time 2032 | import random 2033 | 2034 | play_it = input('do you want to play it.(\'y\' or \'n\')') 2035 | while play_it == 'y': 2036 | c = input('input a character:\n') 2037 | i = random.randint(0,2**32) % 100 2038 | print ('please input number you guess:\n') 2039 | start = time.clock() 2040 | a = time.time() 2041 | guess = int(input('input your guess:\n')) 2042 | while guess != i: 2043 | if guess > i: 2044 | print('please input a little smaller') 2045 | guess = int(input('input your guess:\n')) 2046 | else: 2047 | print('please input a little bigger') 2048 | guess = int(input('input your guess:\n')) 2049 | end = time.clock() 2050 | b = time.time() 2051 | var = (end - start) / 18.2 2052 | print (var) 2053 | # print 'It took you %6.3 seconds' % time.difftime(b,a)) 2054 | if var < 15: 2055 | print ('you are very clever!') 2056 | elif var < 25: 2057 | print ('you are normal!') 2058 | else: 2059 | print ('you are stupid!') 2060 | print ('Congradulations') 2061 | print ('The number you guess is %d' % i) 2062 | play_it = input('do you want to play it.') 2063 | ``` 2064 | 2065 | #### 实例095:转换时间格式 2066 | 2067 | **题目:**字符串日期转换为易读的日期格式。 2068 | 2069 | **程序分析:**看看就得了,dateutil是个第三方库。 2070 | 2071 | ``` 2072 | from dateutil import parser 2073 | dt = parser.parse("Aug 28 2015 12:00AM") 2074 | print (dt) 2075 | ``` 2076 | 2077 | #### 实例096:计算复读次数 2078 | 2079 | **题目:**计算字符串中子串出现的次数。 2080 | 2081 | **程序分析:**无。 2082 | 2083 | ``` 2084 | s1='xuebixuebixuebixuebixuebixuebixuebixue' 2085 | s2='xuebi' 2086 | print(s1.count(s2)) 2087 | ``` 2088 | 2089 | #### 实例097:磁盘写入 2090 | 2091 | **题目:**从键盘输入一些字符,逐个把它们写到磁盘文件上,直到输入一个 # 为止。 2092 | 2093 | **程序分析:**无。 2094 | 2095 | ``` 2096 | if __name__ == '__main__': 2097 | from sys import stdout 2098 | filename = input('输入文件名:\n') 2099 | fp = open(filename,"w") 2100 | ch = input('输入字符串:\n') 2101 | while ch != '#': 2102 | fp.write(ch) 2103 | stdout.write(ch) 2104 | ch = input('') 2105 | fp.close() 2106 | ``` 2107 | 2108 | #### 实例098:磁盘写入II 2109 | 2110 | **题目:**从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件"test"中保存。 2111 | 2112 | **程序分析:**无。 2113 | 2114 | ``` 2115 | if __name__ == '__main__': 2116 | fp = open('test.txt','w') 2117 | string = input('please input a string:\n') 2118 | string = string.upper() 2119 | fp.write(string) 2120 | fp = open('test.txt','r') 2121 | print (fp.read()) 2122 | fp.close() 2123 | ``` 2124 | 2125 | #### 实例099:磁盘读写 2126 | 2127 | **题目:**有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列), 输出到一个新文件C中。 2128 | 2129 | **程序分析:**无。 2130 | 2131 | ``` 2132 | if __name__ == '__main__': 2133 | import string 2134 | fp = open('test1.txt') 2135 | a = fp.read() 2136 | fp.close() 2137 | 2138 | fp = open('test2.txt') 2139 | b = fp.read() 2140 | fp.close() 2141 | 2142 | fp = open('test3.txt','w') 2143 | l = list(a + b) 2144 | l.sort() 2145 | s = '' 2146 | s = s.join(l) 2147 | fp.write(s) 2148 | fp.close() 2149 | ``` 2150 | 2151 | #### 实例100:列表转字典 2152 | 2153 | **题目:**列表转换为字典。 2154 | 2155 | **程序分析:**无。 2156 | 2157 | ``` 2158 | i = ['a', 'b'] 2159 | l = [1, 2] 2160 | print (dict(zip(i,l))) 2161 | ``` -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Python 100 实例 --------------------------------------------------------------------------------