国二赏析(三)

2019-09-14  本文已影响0人  小董不太懂
import turtle
for i in range(6):
    turtle.fd(200)
    turtle.right(60)
输出结果

首先,我要吐槽一下,现在什么人都能去搞在线教育,比如我现在看的这个视频的讲师叫梁永,他的水平我真不能恭维,就是现学现卖,不过换个方向考虑,他对python的简单理解也恰恰能让读者们过二级,但不得不说他的水平很LOW,自称西交研究生,这让我很怀疑西交现在的教学水平。

问题一

他的视频在讲解这道题目的时候简直是胡闹,为了方便自己理解同时尽量帮助作为初学者的大家,我自己写了name和vote文件,自己试验代码,希望能够更好的帮助大家:


这是我的文件

我的文件是仿照真题的文件,通过文件我们会发现,name中有的人投票是瞎投的,因为班级里并没有这个人的名字,比如在投票中出现了孙悟空,所以要想得到有效的票数,我们要拿vote中的合法名单去name中比对,去掉类似于孙悟空这种票。

d = {}#建立一个空字典
n = 0#赋初值
with open(r'C:\Users\董贺贺\Desktop\name.txt','r')as f:
        names = f.readlines()
with open(r'C:\Users\董贺贺\Desktop\vote.txt','r')as f:
        votes = f.readlines()
for vote in votes:#readlines()是形成一个带\n的列表
        ls = vote.split()
#split()会以默认的方式分割,并返回列表类型
        if len(ls)==1:#将vote中一次性投两个人票的当做废票处理
                for name in names:
                        if name.count(ls[0])==1:
#拿去比对
                                n += 1
                        d[ls[0]]=d.get(ls[0],0) + 1
print('有效票数{}张'.format(n))

为了验证我的想法,我重新更改了代码实现了同样的功能:

d = {}#建立一个空字典
new_names = []
n = 0#赋初值
with open(r'C:\Users\董贺贺\Desktop\name.txt','r')as f:
        names = f.readlines()
with open(r'C:\Users\董贺贺\Desktop\vote.txt','r')as f:
        votes = f.readlines()

#split()会以默认的方式分割,并返回列表类型
for name in names:
        new_names.append(name.strip('\n'))
##print(new_names)
for vote in votes:#readlines()是形成一个带\n的列表
        ls = vote.split()
        if len(ls)==1:#将vote中一次性投两个人票的当做废票处理
               if ls[0] in new_names:
                       n += 1
                       d[ls[0]]=d.get(ls[0],0) + 1
print('有效票数{}张'.format(n))

问题二

涉及到items()的使用和sort()函数

d = {}
n = 0
with open(r'C:\Users\董贺贺\Desktop\name.txt','r')as f:
        names = f.readlines()
with open(r'C:\Users\董贺贺\Desktop\vote.txt','r')as f:
        votes = f.readlines()
for vote in votes:
        ls = vote.split()
        for name in names:
                if name.count(ls[0])==1:
                        n += 1
                        d[ls[0]]=d.get(ls[0],0) + 1
md = list(d.items())
md.sort(key=lambda x:x[1],reverse=True)#原地修改,返回值为None
print('班长是{}同学,共得到{}票'.format(md[0][0],md[0][1]))
  • 要注意sort()与sorted()区别
    sort()原地修改别表对象,返回值为None,所以这里不需要新变量接收!
    sorted()会在列表对象的拷贝进行修改,返回修改后,所以这里要用一个变量来接收!
import jieba
text = ''
with open(r'C:\Users\董贺贺\Desktop\a.txt','r')as f1:
    lines = f1.readlines()
with open(r'C:\Users\董贺贺\Desktop\out.txt','w')as f2:
    for line in lines:
        text = text + line.strip('\n')
    words = jieba.lcut(text)
    for w in words:
        f2.write(w+'\n')
D = {}
with open(r'C:\Users\董贺贺\Desktop\out.txt','r')as f:
    lines = f.readlines()
for line in lines:
    key = line.strip('\n')
    D[key] = D.get(key,0) + 1
sym = [',','、','。']
for ch in sym:
    D.pop(ch,'不存在')
new_D = list(D.items())
new_D.sort(key=lambda x:x[1],reverse=True)
print(new_D)
D:\anaconda\python.exe C:/Users/董贺贺/Desktop/jieba_1.py
[('的', 7), (',', 4), ('用', 2), ('得', 2), ('秋风', 1), ('时光', 1), ('旋律', 1), ('桂花', 1), ('芬芳', 1), ('苹果', 1), ('馨香', 1), ('菊花', 1), ('灿烂', 1), ('牵牛花', 1), ('奔放', 1), ('一串红', 1), ('艳丽', 1), ('把', 1), ('一望无际', 1), ('田野', 1), ('乡村', 1), ('演绎', 1), ('在', 1), ('自然', 1), ('中', 1), ('沉醉', 1), ('渲染', 1), ('天地间', 1), ('空旷', 1), ('而', 1), ('又', 1), ('阳刚', 1)]
上一篇 下一篇

猜你喜欢

热点阅读