【实战演练——小例子】简单程序例子
1.斐波那契数列置换法<blockquote>a,b = 0,1递归法def febonaci(n):
if n == 2 or n == 1:
return 1
return febonaci(n-1)+febonaci(n-2)
print(febonaci(10))注意:经过时间统计,这二者的时间是一样的。。。。。如果将递归法中的 n ==2 改外n ==0 那么就会花很长时间
2.zip的子弹也会打光
如下,注意zip也是迭代器哦!!
>>> data = input("请输入")
请输入张猛 男 25
>>> data
'张猛 男 25'
>>> data.split(' ')
['张猛', '男', '25']
>>> data1 = data.split(' ')
>>> data1
['张猛', '男', '25']
>>> data = input("请输入")
请输入杨青 女 18
>>> data2 = data.split(' ')
>>> data = input("请输入")
请输入汪海 男 26
>>> data3 = data.split(' ')
>>> data = input("请输入")
请输入孙倩 女 22
>>> data4 = data.split(' ')
>>> total = zip(data1, data2, data3, data4)
>>> for i in total:
print(i)
('张猛', '杨青', '汪海', '孙倩')
('男', '女', '男', '女')
('25', '18', '26', '22')
>>> for i in total:
for j in i:
print(i)
>>> for i in total:
for j in i:
print(j)
>>> for i in total:
for j in i:
print(j)
>>> total
<zip object at 0x00000262605CDBC0>
>>> for i in total:
print(i)
>>> total = zip(data1, data2, data3, data4)
>>> for i in total:
for j in i:
print(j)
张猛
杨青
汪海
孙倩
男
女
男
女
25
18
26
22
>>> 本帖最后由 Python初学者8号 于 2021-9-26 08:54 编辑
3.统计输入物体的类别——数量键值对,并排序
这个是我做二级py做出来的,我发现这个是一个套路的题目,人家的方法更加巧妙,可以学习一下。
题目大概的意思是,你输入一些物体,比如水果,人名,职业等,然后统计你输入的字符串中的各个条目的种类及其对应的数目。
(1)先上我的,直接统计法
text = '苹果 芒果 草莓 芒果 苹果 草莓 芒果 香蕉 芒果 草莓'
fo = open('Py203.txt','w')
#
text = text.split(' ')
tpe = list(set(text)) <font color="#ff0000">#核心在于这的分类别</font>
<font color="#ff0000">tnum = <font color="#ff0000">#以及第二个这里的生成数目</font></font>
#
d = {}
#
d = dict(zip(tpe,tnum)) <font color="#ff0000"># 以及这里的第三部的缝合</font>
ls = list(d.items())
ls.sort(key = lambda x : x,reverse=True)
fork in ls:
fo.write('{}:{}'.format(k,k))
fo.close()这是个很正常的思路,是个很简单的思路,按照人家给的结构就是这样写:(1)统计类别,用set (2)生成数目,用列表生成器,(3) 缝合生成键值对,用dict字典
但是答案给了个很巧的方法:
text = '苹果 芒果 草莓 芒果 苹果 草莓 芒果 香蕉 芒果 草莓'
fo = open('Py203.txt','w',encoding = "utf-8")
#
text = text.split(' ') # 删去了我的(2)(3)
#
d = {}
#
<font color="#ff0000">for item in text:
d = d.get(item,0) + 1</font>
ls = list(d.items())
ls.sort(key = lambda x : x,reverse=True)
fork in ls:
fo.write('{}:{}'.format(k,k))
fo.close()这个方法,利用d.get()方法的独特性,当给定一个item时,自然d中是没有的,一般来书我们会认为没有就是不能找到,但是恰恰是没有到有的这个过程是建立键值对的过程。因此,当给定一个名字的时候,肯定先是找不到,但是此时会建立一个key,并且得到其数值为0;接着后面就可以到了,知此时得到的d.get('苹果')的返回值就是当前的数目,然后再加上1,就可以得到一个新的值,这个值也是现在加入之后的值。
当然还有要提的说法就是,这个ls.sort(key = lambda x : x,reverse=True)的方法,很好啊,是灵活使用了匿名函数,或者是说,灵活使用了排序sort的方法。只是要注意这个sort方法中的需要使用一个key的参数,其值应该是个函数的名字不加括弧!!
(3)还有一种思路,直接统计生成字典,核心代码如下>>> names=input("请输入各个同学行业名称,行业名称之间用空格间隔(回车结束输入):")
请输入各个同学行业名称,行业名称之间用空格间隔(回车结束输入):护士 旅游 老师 护士 老师 老师
>>> occu = names.split(' ')
>>> occu
['护士', '旅游', '老师', '护士', '老师', '老师']
>>> test_dict = {}
<b>>>>> for i in occu:
test_dict = occu.count(i)</b>
>>> test_dict
{'护士': 2, '旅游': 1, '老师': 3}其实这个方法和(2)的很像啊,我的想法就是对每个i进行统计,反正无非是重复,但是不管怎么重复赋值键值对,都只是重新赋值而已,比如‘老师’,‘护士’,‘老师’,这样的第二次到‘老师’的时候也不会影响这个实际数目>>> for i in occu:
d = d.get(i,0)+1这个想法是:对每个i都统计一次,如果遇到没有的key,就是创建,而遇到了已有的,就加一更新条目
4.编码的例子
一个很好的帖子的解释了这个编码的方式,并且引入介绍了encode和decode两个函数
还有就是,如果在format中使用chr(1203)函数,参数为数字的话,默认是unicode显示哦!! 5.将py转化为exe文件
参考该帖子
页:
[1]