跳至主要内容

python 之 练习

  1. '''
  2. funtion:获取任意自然数的各位数字之和
  3. map(func, *iterables) --> map object
  4. '''
  5. num = input('请输入一个自然数:')
  6. print(sum(map(int,num)))
  7.  
  8. '''
  9. function: 输入两个集合{}并计算其交集、并集和差集
  10. input() 从输入中获取并返回一个字符串
  11. eval() 函数用来执行一个字符串表达式,并返回表达式的值
  12. '''
  13. setA = eval(input('请输入一个集合:'))
  14. setB = eval(input('请输入一个集合:'))
  15. print('交集:',setA & setB)
  16. print('并集:',setA | setB)
  17. print('setA-setB:',setA - setB)
  18.  
  19.  
  20. '''
  21. function: 输入一个整数列表,返回偶数列表
  22. eval() 函数用来执行一个字符串表达式,并返回表达式的值
  23. filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。
  24. 其接收两个参数,第一个为判断函数,第二个为可迭代对象,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新迭代器对象中
  25. '''
  26. lst =input('请输入一个包含若干整数的列表:')
  27. lst =eval(lst)
  28. print(list(filter(lambda x:x%2==0, lst)))
  29.  
  30.  
  31. '''
  32. function: 输入两个整数列表lstA和lstB,返回一个字典,要求lstA中的元素为键,lstB中的元素为值,字典长度取决于最小的列表
  33. zip() 函数用于将一个或多个可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。
  34. 我们可以使用 list() 转换来输出列表。
  35. 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表
  36.  dict(iterable) -> new dictionary initialized as if via:
  37.      d = {}
  38.      for k, v in iterable:
  39.          d[k] = v
  40. '''
  41. lstA =eval(input('请输入包含若干整数的列表 lstA:'))
  42. lstB =eval(input('请输入包含若干整数的列表 lstB:'))
  43. result =dict(zip(lstA, lstB))
  44. print(result)
  45. # print(len(result))
  46. # x,y=zip(*zip(lstA,lstB))
  47. # print(y)
  48. # print(y)
  49.  
  50.  
  51. '''
  52. function: 输入一个整数列表,输出新列表并要求降序排列
  53. sort 与 sorted 区别:
  54. sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
  55. list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
  56.  
  57. sorted(iterable, key=None, reverse=False)
  58. iterable -- 可迭代对象。
  59. key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  60. reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)
  61. 先按照成绩降序排序,相同成绩的按照名字升序排序
  62. d1 = [{'name':'alice', 'score':38}, {'name':'bob', 'score':18}, {'name':'darl', 'score':28}, {'name':'christ', 'score':28}]
  63. l = sorted(d1, key=lambda x:(-x['score'], x['name']))
  64. print(l)
  65.  
  66. '''
  67. lst =eval(input('请输入包含若干整数的列表 lst:'))
  68. print(sorted(lst,reverse=True))
  69.  
  70.  
  71.  
  72. '''
  73. function: 输入一个整数列表,输出列表中所有整数连乘的结果
  74. reduce() 函数会对参数序列中元素进行累积。
  75. 函数将一个数据集合(列表,元组等)中的所有数据进行下列操作:
  76. 用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,
  77. 得到的结果再与第3个数据用 function 函数运算,最后得到一个结果。
  78.  
  79. reduce(function, iterable[, initializer])
  80. function -- 函数,有两个参数
  81. iterable -- 可迭代对象
  82. initializer -- 可选,初始参数
  83. '''
  84. from functools import reduce
  85. lst =eval(input('请输入包含若干整数的列表 lst:'))
  86. print(reduce(lambda x,y:x*y,lst))
  87.  
  88.  
  89. '''
  90. function: 输入两个包含2个整数的列表,代表城市中两个地点的坐标,输出两点之间的曼哈顿距离
  91. map() 会根据提供的函数对指定序列做映射。 返回迭代器
  92. '''
  93. lstA =eval(input('请输入包含2个整数的列表 lstA:'))
  94. lstB =eval(input('请输入包含2个整数的列表 lstB:'))
  95. print(sum(map(lambda i,j:abs(i-j),lstA,lstB)))
  96.  
  97.  
  98.  
  99. '''
  100. funtion: 输入包含若干集合的列表,输出这些集合中的并集
  101. reduce() 函数会对参数序列中元素进行累积,返回一个结果
  102. '''
  103. from functools import reduce
  104. lstSets =eval(input('请输入包含若干集合的列表 lst:'))
  105. print(reduce(lambda x,y:x|y,lstSets))
  106.  
  107.  
  108.  
  109. '''
  110. funtion:已知等比数列首项a1,公比q和一个自然数n,输出等比数列前n项的和
  111. 等比数列是指从第二项起,每一项与它的前一项的比值等于同一个常数的一种数列
  112.  
  113. ∑ = Sn = a1 + a2 + ... + an = a1 * (qn -1) / (q-1)
  114. (特殊情况: 当 q = 1 时, Sn = n * a1)
  115. int([x]) -> integer
  116. int(x, base=10) -> integer     base must be >= 2 and <= 36, or 0
  117. >>> int('0b100', base=0)--->4
  118. '''
  119. a1 =int(input('请输入等比数列首项:'))
  120. =int(input('请输入等比数列公比(不等于1且小于36的正整数:'))
  121. =int(input('请输入一个自然数:'))
  122. result=a1*int('1'*n,q)
  123. print(result)
  124.  
  125.  
  126.  
  127. '''
  128. funtion:输入一个字符串,输出其中出现次数最多的字符集出现的次数,并计数,使用字典
  129. '''
  130. data =input('请输入一个字符串:')
  131. count={}
  132. d=dict()
  133. for ch in data:
  134.     # d.get(ch,0)返回ch出现的值,默认为None,0是来取代None
  135.     d[ch]=d.get(ch,0) +1
  136. mostCommon =max(d.items(),key=lambda item:item[1])
  137. print(mostCommon)
  138.    
  139. for ch in data:
  140.     if ch in count:
  141.         count[ch] +=1
  142.     else:
  143.         count[ch]=1
  144. print(count)
  145.  
  146.  
  147.  
  148. '''
  149. funtion:用蒙特卡罗方法计算圆周率π
  150. 正方形内部有一个相切的圆,圆和正方形的面积之比是π/4
  151. 现在,在这个正方形内部,随机产生10000个点(即10000个坐标对 (x, y)),计算它们与中心点的距离,从而判断是否落在圆的内部。
  152. 如果这些点均匀分布,那么圆内的点应该占到所有点的 π/4,因此将这个比值乘以4,就是π的值
  153. '''
  154. from random import random
  155. times =int(input('请输入掷飞镖次数:'))
  156. hits =0
  157. for i in range(times):
  158.     x = random()
  159.     y = random()
  160.     if x*x + y*y <=1:
  161.         hits +=1
  162.  
  163. print(4.0 * hits/times)
  164.  
  165.  
  166.  
  167. '''
  168. funtion:轮盘抽奖游戏
  169. '''
  170. from random import randrange
  171. def playGame():
  172.     # 查找并返回本次获奖情况
  173.     value = randrange(360)
  174.     for k,in areas.items():
  175.         if v[0]<=value<v[1]:
  176.             return k
  177.  
  178.  
  179. areas = {'一等奖':[0,30],
  180.          '二等奖':[30,108],
  181.          '三等奖':[108,360]}
  182.  
  183. results = dict()
  184.  
  185. for i in range(10000):
  186.     r = playGame()
  187.     results[r]=results.get(r,0)+1
  188.  
  189.  
  190. for item in results.items():
  191.     print('{0[0]}:{0[1]}次'.format(item))

评论

此博客中的热门博文

学习地址

清华大学计算机系课程攻略 https://github.com/PKUanonym/REKCARC-TSC-UHT 浙江大学课程攻略共享计划 https://github.com/QSCTech/zju-icicles https://home.unicode.org/ 世界上的每个人都应该能够在手机和电脑上使用自己的语言。 http://codecanyon.net   初次看到这个网站,小伙伴们表示都惊呆了。原来代码也可以放在网上卖的?!! 很多coder上传了各种代码,每个代码都明码标价。看了下销售排行,有的19刀的卖了3万多份,额di神啊。可以看到代码的演示效果,真的很漂亮。代码以php、wordpress主题、Javascript、css为主,偏前台。 https://www.lintcode.com/ 算法学习网站,上去每天刷两道算法题,走遍天下都不怕。 https://www.codecademy.com/ 包含在线编程练习和课程视频 https://www.reddit.com/ 包含有趣的编程挑战题,即使不会写,也可以查看他人的解决方法。 https://ideone.com/ 在线编译器,可运行,可查看代码示例。 http://it-ebooks.info/ 大型电子图书馆,可即时免费下载书籍。 刷题 https://github.com/jackfrued/Python-100-Days https://github.com/kenwoodjw/python_interview_question 面试问题 https://github.com/kenwoodjw/python_interview_question https://www.journaldev.com/15490/python-interview-questions#python-interpreter HTTP 身份验证 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Authentication RESTful 架构详解 https://www.runoob.com/w3cnote/restful-architecture.html https://www.rosettacode.org/wiki/Rosetta_C...

PDF处理

虚拟pdf打印机 pdfFactory  https://fineprint.com PDFCreator  https://www.pdfforge.org 开源 cutepdf https://www.cutepdf.com/index.htm Doro PDF Writer http://www.the-sz.com/products/doro PdfScribe  https://github.com/stchan/PdfScribe/releases pdf阅读器 Sumatra PDF https://www.sumatrapdfreader.org/ 为什么 Python 用于 PDF 处理  如您所知,PDF 处理属于文本分析。 大多数文本分析库或框架仅使用 Python 设计。 这为文本分析提供了优势。 还有一件事,您永远无法在现有的机器学习或自然语言处理框架中直接处理 pdf。 除非他们为此证明了显式接口。 我们必须先将pdf转换为文本。 我们可以使用下述任何库轻松实现这一点。 在线转换pdf Sejda https://www.sejda.com/pdf-editor 每个文档 200 页的免费限制 https://www.pdf2go.com/ https://tools.pdfforge.org/extract-text PDF24 Tools https://tools.pdf24.org/zh/ 免费且易于使用的在线PDF工具 FreeOCR http://www.paperfile.net/ 适用于Windows的免费光学字符识别软件,支持大多数Twain扫描仪的扫描,还可以打开大多数扫描的PDF和多页Tiff图像以及流行的图像文件格式,FreeOCR输出纯文本,可以直接导出为Microsoft Word格式。 不支持中文 wkhtmltopdf 和 wkhtmltoimage 是使用 QT Webkit 渲染引擎将 HTML 渲染为 PDF 和各种图像格式的命令行工具。这些完全“无头”运行,不需要显示或显示服务。 https://wkhtmltopdf.org/ django-wkhtmltopdf 允许 Django 站点输出动态 PDF。它利用 wkhtmltopdf 库,允许您使用您知道...

安卓 之 apk下载、ADB、 scrcpy

Apk下载 下载离线安装apk https://www.apkmirror.com/ 免费和安全的Android APK下载 https://apkpure.com/ 被暴雷,有植入 https://apps.evozi.com/apk-downloader/ 可以将Google Play( https://play.google.com )中的apk文件所在网址直接下载到台式机和设备上 https://f-droid.org/zh_Hans/ F-Droid 是一个 Android 平台上 FOSS(Free and Open Source Software,自由开源软件)的目录,并提供下载安装支持。使用客户端可以更轻松地浏览、安装及跟进设备上的应用更新。 https://gitlab.com/AuroraOSS/AuroraStore Aurora商店 是Google Play商店的非官方FOSS客户,设计典雅。 Aurora商店不仅下载,更新和搜索Play商店等应用 https://github.com/OpenTracksApp/OpenTracks OpenTracks是一款运动跟踪应用程序,完全尊重您的隐私。 Tasker https://tasker.joaoapps.com/ 是一款适用于Android的应用程序,它可以根据用户定义的配置文件中的上下文、可点击或定时的主屏幕小部件来执行任务。它无需root或特殊的主屏幕就能控制Android设备。 AsciiCam AsciiCam可以从您的相机指向的任何位置实时生成ASCII图像。选择黑白,原色或全彩,拍照,并将其作为图像或HTML共享。您还可以在库中创建ASCII版本的图片,并且每次使用标准相机应用程序拍摄照片时,也可以选择自动生成ASCII版本。 AsciiCam是完全免费和开源的。 Apk1安装器 优化微信apk文件接收体验。 微信收到apk文件会加 ".1" 后缀导致打不开,必须自己手动找到文件重命名去掉后缀。 使用本安装器就可以在微信内,潇洒地点击直接打开。甚至可以在安装器内浏览apk1文件历史接收记录。 ADB ADB全名是 Android Debug Bridge,是开发或使用Android时很常用的工具。可以从电脑通过USB连线到Android手机上 https:...