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

python100实例的更多相关文章

  1. 最近学习工作流 推荐一个activiti 的教程文档

    全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Contents 1. 简介 协议 下载 源码 必要的软件 ...

  2. 菜鸟教程 Python100例 之实例29

    学习编程的路,走得好艰辛... 为了巩固基础知识,把菜鸟教程网上的实例拿来练习.. 在做到实例29时,看了网站给出的代码,觉得可以加强一下功能,不由得动了一下脑筋,如下: 原文题目: 题目:给一个不多 ...

  3. 快速入门:Python简单实例100个(入门完整版)

    Python3 100例 文章目录 Python3 100例 实例001:数字组合 实例002:“个税计算” 实例003:完全平方数 实例004:这天第几天 实例005:三数排序 实例006:斐波那契 ...

  4. js-静态、原型、实例属性

    本篇来说一下js中的属性: 1.静态属性 2.原型属性 3.实例属性 静态属性: function klass(){} var obj=new klass(); klass.count=0; klas ...

  5. ZIP压缩算法详细分析及解压实例解释

    最近自己实现了一个ZIP压缩数据的解压程序,觉得有必要把ZIP压缩格式进行一下详细总结,数据压缩是一门通信原理和计算机科学都会涉及到的学科,在通信原理中,一般称为信源编码,在计算机科学里,一般称为数据 ...

  6. EntityFramework Core 1.1是如何创建DbContext实例的呢?

    前言 上一篇我们简单讲述了在EF Core1.1中如何进行迁移,本文我们来讲讲EF Core1.1中那些不为人知的事,细抠细节,从我做起. 显式创建DbContext实例 通过带OnConfiguri ...

  7. redis集成到Springmvc中及使用实例

    redis是现在主流的缓存工具了,因为使用简单.高效且对服务器要求较小,用于大数据量下的缓存 spring也提供了对redis的支持: org.springframework.data.redis.c ...

  8. 流程开发Activiti 与SpringMVC整合实例

    流程(Activiti) 流程是完成一系列有序动作的概述.每一个节点动作的结果将对后面的具体操作步骤产生影响.信息化系统中流程的功能完全等同于纸上办公的层级审批,尤其在oa系统中各类电子流提现较为明显 ...

  9. UWP开发之Template10实践:本地文件与照相机文件操作的MVVM实例(图文付原代码)

    前面[UWP开发之Mvvmlight实践五:SuspensionManager中断挂起以及复原处理]章节已经提到过Template10,为了认识MvvmLight的区别特做了此实例. 原代码地址:ht ...

随机推荐

  1. 关于C++的右值引用的一些看法

    简介 关于C++中的右值引用的详细可以看这一批博文<从4行代码看右值引用>.那一篇博文详细结合四行简单的代码详细介绍了右值引用的使用方法和一些场景,非常实用. 而本篇博文主要介绍一下我在学 ...

  2. 048 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 10 案例——阶乘的累加和

    048 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 10 案例--阶乘的累加和 本文知识点:通过案例练习嵌套循环应用 案例练习--阶乘的累加和 案例题目 ...

  3. 【题解】[SDOI2010]捉迷藏

    题目链接:https://www.luogu.com.cn/problem/P2479 题目大意:求平面\(n\)个点中,到其它\(n-1\)个点的曼哈顿距离最大和最小距离之差最小的点,求出这个这个距 ...

  4. MYSQL 50 基础题 (转载)

    MYSQL 50 基础题 (转载) 前言:最近在强化MYSQL 能力 答案在(也是转载处) https://www.cnblogs.com/kangxinxin/p/11585935.html 下面是 ...

  5. Java安全之Commons Collections1分析(一)

    Java安全之Commons Collections1分析(一) 0x00 前言 在CC链中,其实具体执行过程还是比较复杂的.建议调试前先将一些前置知识的基础给看一遍. Java安全之Commons ...

  6. 2018年10月份编程语言排行榜(来自TIOBE Index for October 2018)

    TIOBE Index for October 2018 from:https://www.tiobe.com/tiobe-index// October Headline: Swift is kno ...

  7. linux 内存泄露检测工具

    Valgrind Memcheck 一个强大开源的程序检测工具 下载地址:http://valgrind.org/downloads/current.html Valgrind快速入门指南:http: ...

  8. background-size 详解

    backgroun-size:cover; .是按照等比缩放铺满整个区域.主要用于图片比div小的时候,将图片按照某一边的比例扩大以填充整个div背景. .优点:图片不会被拉升,且实用于div长度和宽 ...

  9. 彻底根治window弹窗小广告(今日热点)

    在一个阴雨蒙蒙的下午,我上完厕所回到工位,输入锁屏密码,解锁,蹦出来三个小广告,我......这还能忍??? 废话不多说,开搞! 一.广告分为两种: 红色字的今日热点 蓝色字的今日热点 二.追溯根源: ...

  10. operator bool()是什么

    operator bool()是什么 在C++中,operator TypeName()语法用来将对象转换为指定的TypeName类型,当这里TypeName为bool时,就可以直接在条件判断式里面直 ...