佛系计算机二级&Python学习

python小白的求学之路

写在前面

第一次接触Python,也是第一次深入学习代码。完完全全的纯小白,希望自己在一边学一边码的同时,能精进自己的技术,同时也和更多刚入门也想学好Python的小伙伴一起努力!

Python Round①

居中对齐输入str,用*填充空白部分

s = input("请输入一串文本:")
print("{:*^30}".format(s))
# print("{:*<30}".format(s))	#左对齐
# print("{:*>30}".format(s))	#右对齐

斐波那契数列,输出不大于50的数

a,b = 0,1
while a <= 50:
	print(a,end=",")	#若不输入end=,则会分段输出
	a,b = b,a+b

字符串倒序输出(jieba库)

import jieba
txt = input("请输入一段文本:")
ls = jieba.lcut(txt)
for i in ls[::-1]:
	print(i,end="")

jieba.lcut会将文本划分成一个列表([‘我’, ‘是’, ‘你’, ‘哥哥’]),通过ls[::-1]将列表转置再打印出来,即可得到倒序输出。

海龟绘图(turtle库)

import turtle
for i in range(3):	#绘制的是一个三角形
	turtle.seth(i*120)	#seth只会改变角度,且是相对角度
	turtle.fd(100)	#前进100距离

统计字符串词频并以文件输出(字典的使用)

fo = open("PYH123.txt","w",encoding = "utf-8")
txt = input("请输入一段序列:")
fruits = txt.split(" ")
d = {}
for fruit in fruits:
	d[fruit] = d.get(fruit,0)+1
lst = list(d.items())
lst.sort(key = lambda x:x[1],reverse = True)
for i in lst:
	fo.write("{0}:{1}\n".format(i[0],i[1]))
fo.close()

几个要点:

  • 创建文件方式:open(“XXX.txt”,“w”,encoding = “utf-8”),并且记得最后要close()文件(用with open 则不需要写关闭文件)。
  • 统计元素个数:该问题特别适合采用字典类型,构成“元素:次数”的键值对。
  • d[fruit] = d.get(fruit,0)+1: 对字典d,索引其中的fruit元素对应的值。
    — ①若字典d为空,此时函数的作用为检测并生成新元素,同时对新元素初始化为0,由于遇见了新元素,返回值 + 1;
    — ②若字典d不为空,当检测出新元素时遵从①,当再次遇见相同元素时,返回值 + 1。

也可理解为d.get(fruit,0)表示,在d中寻找fruit,如果没找到则返回0

  • lst.sort(key = lambda x:x[1],reverse = True):这里的lambda是默认的,别管他,后面的x:x[0]代表字典的键(key)给sort排序,x:x[1]代表字典的值(values)给sort排序,reverse=true表示降序,reverse=false表示升序。
  • "{0}:{1}\n":若想要竖向排列,需加换行符\n。
  • format(i[0],i[1]):i[0]代表键,i[1]代表值,将其赋值代入进去。

综合运用

(1)词频统计1(频次最高)
fo = open("小女孩.txt","r")
fi = open("PYP123.txt,"w",encoding = "utf-8")
txt = fo.read()
d = {}
sss = ",。!?、()【】<>《》=:+-*—“”…"
for i in txt:
	if i in sss:
		continue
	else:
		d[i] = d.get(i,0+1
lst = list(d.items())
lst.sort(key = lambda x:x[1],reverse = True)
fi.write("{0}:{1}".format(lst[0][0],lst[0][1])
fo.close()
fi.close()

和前面不一样之处:

  • 因为要读入给定的文本txt,故在最开始要先利用txt = fo.read(),将fo文本内容全部读入。
  • 这里只用输出最大的,而非遍历所有结果,所以最后没用for i in lst,直接倒序后(第一个元组即为最大值—>>lst[0]),再在第一个元组中选择键和值(lst[0][0]、lst[0][1])
(2)词频统计(频次TOP 10)
fi = open("小女孩.txt","r")
fo = open("PYH123.txt","w",encoding="utf-8")
txt = fi.read()
d = {}
for i in txt:
	d[i] = d.get(i,0)+1
del d["\n"]
lst = list(d.items())
lst.sort(key = lambda x:x[1],reverse = True)
for i in range(10):
	fo.write("{0}".format(lst[i][0]))
fo.close()
fi.close()
  • 删除字典中的元素del d[“key”]
  • 与前一题不同的是这里只输出TOP 10的值,采用了range(10),并用lst[i][0]来传入参数,非常巧妙
(3)词频统计(逗号分隔)
fi = open("小女孩.txt","r")
fo = open("小女孩-频次排序.txt","w",encoding="utf-8")
txt = fi.read()
d = {}
for word in txt:
    d[word] = d.get(word,0)+1
del d[" "]
del d["\n"]
ls = list(d.items())
ls.sort(key=lambda x:x[1], reverse=True) 
for i in range(len(ls)):
    ls[i] = "{0}:{1}".format(ls[i][0],ls[i][1])
fo.write(",".join(ls))
fi.close()
fo.close()
  • for i in range(len(ls)):
    ls[i] = “{0}:{1}”.format(ls[i][0],ls[i][1])
    ----- 若仅用ls = list(d.items()),里面每个元素都是tuple类型,不能完成后续操作,需要将其转换为list才能完成join操作。
    ----- ls[i] = … 相当于再次重新定义ls里的内容,而不再是tuple类型。

  • 常规采用join方法将尾部添加分隔,且末尾不会有分隔

总结

还是有很多不知道的地方,希望能够坚持下去
#2022.02.20留念

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人生苦短我愛Python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值