跳至主要内容

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))

评论

此博客中的热门博文

Mongo 入门

https://pymongo.readthedocs.io/en/stable/tutorial.html https://www.mongodb.com/languages/python https://zhuanlan.zhihu.com/p/51171906 https://www.runoob.com/python3/python-mongodb.html https://blog.baoshuo.ren/post/luogu-spider/ https://hub.docker.com/_/mongo 安装 MongoDB $ docker search mongo 启动一个mongo服务器实例 $ docker run --name some-mongo -d mongo:tag some-mongo是您要分配给容器的名称,tag是指定您想要的 MongoDB 版本的标签 MongoDB 的默认数据目录路径是/data/db 如下: $ docker run -it -v mongodata:/data/db -p 27017:27017 --name mongodb --restart unless-stopped -d mongo 你应该让 MongoDB 在端口 27017 上运行,并且可以通过localhostWindows 和 Ubuntu 20.04 上的URL访问 http://localhost:27017/ -p 是 HOST_PORT:CLIENT_PORT  -P 随机端口 -p 27017:27017 :将容器的27017 端口映射到主机的27017 端口 -v mongodata:/data/db :将主机中当前目录下的db挂载到容器的/data/db,作为mongo数据存储目录 从另一个 Docker 容器连接到 MongoDB 镜像中的 MongoDB 服务器侦听标准 MongoDB 端口27017,因此通过 Docker 网络连接将与连接到远程mongod. 以下示例启动另一个 MongoDB 容器实例,并mongo针对上述示例中的原始 MongoDB 容器运行命令行客户端,从而允许您针对数据库实例执行 MongoDB 语句: $ docker run -it --network some-network --...

MechanicalSoup

用于自动与网站交互的 Python 库。 MechanicalSoup 自动存储和发送 cookie,跟踪重定向,并且可以跟踪链接和提交表单。 它不执行 JavaScript。 https://github.com/MechanicalSoup/MechanicalSoup https://mechanicalsoup.readthedocs.io/en/stable/index.html https://realpython.com/python-web-scraping-practical-introduction/ pip show Mechanicalsoup 找到模块的安装位置 https://stackoverflow.com/questions/54352162/download-file-with-mechanicalsoup # Install dependencies # pip install requests # pip install BeautifulSoup4 # pip install MechanicalSoup # Import libraries import mechanicalsoup import urllib.request import requests from bs4 import BeautifulSoup import re # Create a browser object that can collect cookies browser = mechanicalsoup.StatefulBrowser() browser.open("https://www.ons.gov.uk/economy/grossdomesticproductgdp/timeseries/l2kq/qna") browser.download_link(link_text=".xls",file="D:/ONS_Data.xls" )

端口映射 公网访问内网

https://portforward.com/ Holer 通过安全隧道将位于NAT和防火墙之后的本地服务器暴露给公共Internet。 Holer是一个将原型中的应用映射到公网访问的端口映射软件,支持转发基于TCP协议的报文 https://github.com/wisdom-projects/holer 方式一:使用(公告)的holer映射或者开通holer服务,通过holer客户端软件经 holer服务器实现公网访问。 公开的holer映射详情如下: 访问密钥 访问域名 公网地址 本地地址 使用场景 HOLER_CLIENT-2F8D8B78B3C2A0AE holer65530.wdom.net holer.org:65530 127.0.0.1:8080 网页 HOLER_CLIENT-3C07CDFD1BF99BF2 holer65531.wdom.net holer.org:65531 127.0.0.1:8088 网页 HOLER_CLIENT-2A623FCB6E2A7D1D holer65532.wdom.net holer.org:65532 127.0.0.1:80 网页 HOLER_CLIENT-AF3E6391525F70E4 不适用 holer.org:65533 127.0.0.1:3389 远程桌面 HOLER_CLIENT-822404317F9D8ADD 不适用 holer.org:65534 127.0.0.1:22 SSH协议 HOLER_CLIENT-27DD1389DF1D4DBC 不适用 holer.org:65535 127.0.0.1:3306 数据库 使用Java版本的holer客户端 ①java 1.7或者更高版本 ②下载holer-client.zip 修改配置文件C:\holer-client\conf\holer.conf HOLER_ACCESS_KEY=HOLER_CLIENT-2A623FCB6E2A7D1D HOLER_SERVER_HOST=holer65532.wdom.net ③建议先双击运行C:\holer-client\bin\shutdown.bat,再双击运行C:\holer-client\bin\startup.bat...