鱼C论坛

 找回密码
 立即注册
查看: 2017|回复: 4

[技术交流] 【实战演练——小例子】简单程序例子

[复制链接]
发表于 2021-9-22 11:25:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1.斐波那契数列置换法
  1. <blockquote>a,b = 0,1
复制代码
递归法
  1. def febonaci(n):
  2.     if n == 2 or n == 1:
  3.         return 1
  4.     return febonaci(n-1)+febonaci(n-2)
  5. print(febonaci(10))
复制代码
注意:经过时间统计,这二者的时间是一样的。。。。。如果将递归法中的 n ==2 改外n ==0 那么就会花很长时间
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-23 10:50:38 | 显示全部楼层
2.zip的子弹也会打光
如下,注意zip也是迭代器哦!!
  1. >>> data = input("请输入")
  2. 请输入张猛 男 25
  3. >>> data
  4. '张猛 男 25'
  5. >>> data.split(' ')
  6. ['张猛', '男', '25']
  7. >>> data1 = data.split(' ')
  8. >>> data1
  9. ['张猛', '男', '25']
  10. >>> data = input("请输入")
  11. 请输入杨青 女 18
  12. >>> data2 = data.split(' ')
  13. >>> data = input("请输入")
  14. 请输入汪海 男 26
  15. >>> data3 = data.split(' ')
  16. >>> data = input("请输入")
  17. 请输入孙倩 女 22
  18. >>> data4 = data.split(' ')
  19. >>> total = zip(data1, data2, data3, data4)
  20. >>> for i in total:
  21.     print(i)
  22.    
  23. ('张猛', '杨青', '汪海', '孙倩')
  24. ('男', '女', '男', '女')
  25. ('25', '18', '26', '22')
  26. >>> for i in total:
  27.     for j in i:
  28.         print(i)
  29.         
  30. >>> for i in total:
  31.     for j in i:
  32.         print(j)
  33.         
  34. >>> for i in total:
  35.     for j in i:
  36.         print(j)
  37.         
  38. >>> total
  39. <zip object at 0x00000262605CDBC0>
  40. >>> for i in total:
  41.     print(i)
  42.    
  43. >>> total = zip(data1, data2, data3, data4)
  44. >>> for i in total:
  45.     for j in i:
  46.         print(j)
  47.         
  48. 张猛
  49. 杨青
  50. 汪海
  51. 孙倩




  52. 25
  53. 18
  54. 26
  55. 22
  56. >>>
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-23 11:44:55 | 显示全部楼层
本帖最后由 Python初学者8号 于 2021-9-26 08:54 编辑

3.统计输入物体的类别——数量键值对,并排序
这个是我做二级py做出来的,我发现这个是一个套路的题目,人家的方法更加巧妙,可以学习一下。
题目大概的意思是,你输入一些物体,比如水果,人名,职业等,然后统计你输入的字符串中的各个条目的种类及其对应的数目。
(1)先上我的,直接统计法

  1. text = '苹果 芒果 草莓 芒果 苹果 草莓 芒果 香蕉 芒果 草莓'
  2. fo = open('Py203.txt','w')
  3. #
  4. text = text.split(' ')
  5. tpe = list(set(text))     <font color="#ff0000">#核心在于这的分类别</font>
  6. <font color="#ff0000">tnum = [text.count(i) for i in tpe]   <font color="#ff0000">#以及第二个这里的生成数目</font></font>
  7. #
  8. d = {}
  9. #
  10. d = dict(zip(tpe,tnum))   <font color="#ff0000"># 以及这里的第三部的缝合</font>
  11. ls = list(d.items())
  12. ls.sort(key = lambda x : x[1],reverse=True)
  13. for  k in ls:
  14.     fo.write('{}:{}'.format(k[0],k[1]))
  15. fo.close()
复制代码
这是个很正常的思路,是个很简单的思路,按照人家给的结构就是这样写:(1)统计类别,用set (2)生成数目,用列表生成器,(3) 缝合生成键值对,用dict字典
但是答案给了个很巧的方法:
  1. text = '苹果 芒果 草莓 芒果 苹果 草莓 芒果 香蕉 芒果 草莓'
  2. fo = open('Py203.txt','w',encoding = "utf-8")
  3. #
  4. text = text.split(' ')   # 删去了我的(2)(3)
  5. #
  6. d = {}
  7. #
  8. <font color="#ff0000">for item in text:
  9.     d[item] = d.get(item,0) + 1</font>
  10. ls = list(d.items())
  11. ls.sort(key = lambda x : x[1],reverse=True)
  12. for  k in ls:
  13.     fo.write('{}:{}'.format(k[0],k[1]))
  14. fo.close()
复制代码
这个方法,利用d.get()方法的独特性,当给定一个item时,自然d中是没有的,一般来书我们会认为没有就是不能找到,但是恰恰是没有到有的这个过程是建立键值对的过程。因此,当给定一个名字的时候,肯定先是找不到,但是此时会建立一个key,并且得到其数值为0;接着后面就可以到了,知此时得到的d.get('苹果')的返回值就是当前的数目,然后再加上1,就可以得到一个新的值,这个值也是现在加入之后的值。
当然还有要提的说法就是,这个ls.sort(key = lambda x : x[1],reverse=True)的方法,很好啊,是灵活使用了匿名函数,或者是说,灵活使用了排序sort的方法。只是要注意这个sort方法中的需要使用一个key的参数,其值应该是个函数的名字不加括弧!!

(3)还有一种思路,直接统计生成字典,核心代码如下
  1. >>> names=input("请输入各个同学行业名称,行业名称之间用空格间隔(回车结束输入):")

  2. 请输入各个同学行业名称,行业名称之间用空格间隔(回车结束输入):护士 旅游 老师 护士 老师 老师
  3. >>> occu = names.split(' ')
  4. >>> occu
  5. ['护士', '旅游', '老师', '护士', '老师', '老师']
  6. >>> test_dict = {}
  7. <b>>>>> for i in occu:
  8.               test_dict[i] = occu.count(i)</b>

  9. >>> test_dict
  10. {'护士': 2, '旅游': 1, '老师': 3}
复制代码
其实这个方法和(2)的很像啊,我的想法就是对每个i进行统计,反正无非是重复,但是不管怎么重复赋值键值对,都只是重新赋值而已,比如‘老师’,‘护士’,‘老师’,这样的第二次到‘老师’的时候也不会影响这个实际数目
  1. >>> for i in occu:
  2.         d[i] = d.get(i,0)+1
复制代码
这个想法是:对每个i都统计一次,如果遇到没有的key,就是创建,而遇到了已有的,就加一更新条目



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-23 12:01:10 | 显示全部楼层
4.编码的例子
一个很好的帖子的解释了这个编码的方式,并且引入介绍了encode和decode两个函数

还有就是,如果在format中使用chr(1203)函数,参数为数字的话,默认是unicode显示哦!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-24 17:42:18 | 显示全部楼层
5.将py转化为exe文件
参考该帖子
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-15 06:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表