首页 > 编程语言 >从零开始的python之旅(day4)

从零开始的python之旅(day4)

时间:2025-01-16 21:11:07浏览次数:1  
标签:turtle __ name python day4 list1 list2 从零开始 def

从零开始的python之旅(day4)

  昨天博客园好像崩了,所以昨天晚上没写,就挪到今天来补了,昨天主要是文件操作,话不多说,上代码

  addressBook

def main():
    file1 = open('TeleAddressBook.txt','rb')
    file2 = open('EmailAddressBook.txt','rb')
    file1.readline()
    file2.readline()
    list1 = file1.readlines()
    list2 = file2.readlines()
    # print(list1)
    list1_name = []
    list1_tele = []
    list2_name = []
    list2_email = []
    for i in list1:
        el = i.split()
        list1_name.append(str(el[0].decode('gbk')))
        list1_tele.append(str(el[1].decode('gbk')))
    for i in list2:
        el = i.split()
        list2_name.append(str(el[0].decode('gbk')))
        list2_email.append(str(el[1].decode('gbk')))
    list3 = []
    list3.append('姓名\t    电话   \t  邮箱\n')
    for i in range(len(list1_name)):
        s = ''
        if list1_name[i] in list2_name:
            j = list2_name.index(list1_name[i])
            s = '\t'.join([list1_name[i],list1_tele[i],list2_email[j]])
        else :
            s = '\t'.join([list1_name[i],list1_tele[i],str('   -----   ')])
        s += '\n'
        list3.append(s)
    for i in range(len(list2_name)) :
        s = ''
        if list2_name[i] not in list1_name:
            s = '\t'.join([list2_name[i],str('   -----   '),list2_email[i]])
            s += '\n'
            list3.append(s)

    file3 = open('addressbook.txt','w')
    file3.writelines(list3)
    file1.close()
    file2.close()
    file3.close()

if __name__ == '__main__':
    main()

  这段程序主要是将两个文件合并,在此处没啥问题,可以看看day5差不多类似代码,换种方法读入

  CountOccurencesOfWords

import turtle

count = 10
data = []
words = []
yScale = 12
xScale = 35
def drawLine(p,x1,y1,x2,y2):
    p.penup()
    p.goto(x1,y1)
    p.pendown()
    p.goto(x2,y2)

def drawText(p,x,y,text):
    p.penup()
    p.goto(x,y)
    p.pendown()
    p.write(text)

def drawRectangle(p,x,y):
    x = x*xScale
    y = y*yScale
    drawLine(p,x-5,0,x-5,y)
    drawLine(p,x-5,y,x+5,y)
    drawLine(p,x+5,y,x+5,0)
    drawLine(p,x+5,0,x-5,0)

def drawBar(p):
    for i in range(count):
        drawRectangle(p,i+1,data[i])

def drawGraph(p):
    drawLine(p,0,0,360,0)
    drawLine(p,0,300,0,0)
    for x in range(1,count+1):
        drawText(p,x*xScale-4,-20,(words[x - 1]))
        drawText(p,x*xScale-4,data[x-1]*yScale+10,data[x-1])
    drawBar(p)

def replacePunctuations(line):
    for ch in line:
        if ch in '~@#$%^&*()_+=<>?/.,;:{}[]|\"""':
            line = line.replace(ch," ")
    return line

def processLine(line,wordCounts):
    line = replacePunctuations(line)
    words = line.split()
    for word in words:
        if word in wordCounts:
            wordCounts[word] += 1
        else :
            wordCounts[word] = 1

def main():
    file = open('article.txt','r',encoding='utf-8')
    wordCounts = {}
    for i in file:
        processLine(i.lower(),wordCounts)
    pairs = list(wordCounts.items())
    items = [[x,y] for (y,x) in pairs]
    items.sort()
    for i in range(len(items) - 1,len(items) - count - 1,-1):
        print(items[i][1] + '\t' + str(items[i][0]))
        data.append(items[i][0])
        words.append(items[i][1])
    file.close()
    turtle.title('词频结果柱状图')
    turtle.setup(900,750,0,0)
    p = turtle.Turtle()
    p.hideturtle()
    p.width(3)
    drawGraph(p)

if __name__ == '__main__':
    main()

  在这段程序中,读取文章内容(英文)然后转化大小写等等一系列操作后,统计单词出现频率然后利用turtle画出来。

  drawDay

import turtle
from turtle import Turtle
rulues = {
    0: [1, 1, 1, 0, 1, 1, 1],
    1: [0, 0, 1, 0, 0, 0, 1],
    2: [0, 1, 1, 1, 1, 1, 0],
    3: [0, 1, 1, 1, 0, 1, 1],
    4: [1, 0, 1, 1, 0, 0, 1],
    5: [1, 1, 0, 1, 0, 1, 1],
    6: [1, 1, 0, 1, 1, 1, 1],
    7: [0, 1, 1, 0, 0, 0, 1],
    8: [1, 1, 1, 1, 1, 1, 1],
    9: [1, 1, 1, 1, 0, 0, 1]
}
def makedraw(p,x):#可以利用规律减少代码量,半欧拉图,从左侧中部开始画
    pending = rulues.get(x)
    p.penup()
    if(pending[0]):
        p.pendown()
    p.fd(50)
    p.right(90)
    p.penup()
    if (pending[1]):
        p.pendown()
    p.fd(50)
    p.right(90)
    p.penup()
    if (pending[2]):
        p.pendown()
    p.fd(50)
    p.penup()
    if (pending[3]):
        p.pendown()
    p.right(90)
    p.fd(50)
    p.penup()
    if (pending[4]):
        p.pendown()
    p.left(90)
    p.fd(50)
    p.penup()
    if (pending[5]):
        p.pendown()
    p.left(90)
    p.fd(50)
    p.penup()
    if (pending[6]):
        p.pendown()
    p.left(90)
    p.fd(50)
    p.penup()

def draw(x):
    turtle.setworldcoordinates(-20,-500,700,500)
    p = Turtle()
    p.pensize(5)
    p.hideturtle()
    p.color('red')
    p.speed(5)
    p.penup()
    p.left(90)
    xx = int(-70)
    for i in range(len(x)):
        xx += 80
        p.goto(xx,0)
        if i == 4:
            p.goto(xx-15,0)
            p.write('年', font=("Arial", 15, "normal"))
            p.goto(xx+15,0)
            p.color('green')
        elif i == 6:
            p.goto(xx-15,0)
            p.write('月', font=("Arial", 15, "normal"))
            p.goto(xx+15,0)
            p.color('blue')
        makedraw(p,int(x[i]))
    xx += 80
    p.goto(xx - 15, 0)
    p.write('日', font=("Arial", 15, "normal"))
    p.goto(xx + 15, 0)
    turtle.done()
def main():
    yearmonthday = input('输入年月日(例如20250101,如不满八位,用0补满八位)\n')
    draw(yearmonthday)

main()

  这一部分则是昨天作业,

  route

import turtle

def main():
    turtle.title('数据驱动的动态路径绘制')
    turtle.setup(800,600,0,0)
    p = turtle.Turtle()
    p.color('red')
    p.width(5)
    p.shape('turtle')
    p.speed(5)
    result = []
    file = open('data.txt','r')
    for i in file:
        result.append(list(map(float,i.split(','))))
    print(result)
    for i in range(len(result)):
        p.color(result[i][3:6])
        p.fd(result[i][0])
        if result[i][1] :
            p.right(result[i][2])
        else :
            p.left(result[i][2])
    p.goto(0,0)
    file.close()

if __name__ == '__main__':
    main()

  day4主要是,文件处理和turtle库的进阶。文件处理时,还是要注意,encoding和decode的类型类型选择。其他的没啥了

标签:turtle,__,name,python,day4,list1,list2,从零开始,def
From: https://www.cnblogs.com/Liyukio/p/18675761

相关文章

  • 【ArcGIS】基于ChatGPT、GIS与Python机器学习的地质灾害风险评估、易发性分析、信息化
    目录第一章、ChatGPT大语言模型提示词与地质灾害基础及平台介绍第二章、空间信息数据库建设第三章、ChatGPT支持下地质灾害风险评价模型与方法第四章、ChatGPT支持下地质灾害风险性、易损性、易发性评价第五章、基于ChatGPT、Python数据预处理与分析【进阶篇】第六章、Ch......
  • Python-基础-列表(list)
    目录1、列表1.1列表的定义1.2列表的特点2、列表的常用语法2.1常用操作2.2列表常用的方法2.3列表常用的函数3、列表推导式1、列表1.1列表的定义列表(List)是一种用于存储多个项目的可变数据结构。它允许你将不同类型的元素(如数字、字符串、甚至其他列表)组织在......
  • 十分钟写作Day4 1.16
    前言本来昨天和赵北,南皓文和樊绍峰一起去看北京男篮德比,但又因昨天是命题作文,没有记录下我当时的感慨,便在今天的随笔里说说我的看法。正文与其说是感慨,不如说这是从不同角度观察这场比赛。由于赵北已经在他的随笔里介绍了比赛的全过程,因此我在这里也不过多的赘述比赛本身。而......
  • Python+Django的社区爱心捐赠(Pycharm Flask Django Vue mysql)
    收藏关注不迷路,防止下次找不到!文章末尾有惊喜项目介绍Python+Django的社区爱心捐赠(PycharmFlaskDjangoVuemysql)项目展示详细视频演示请联系我获取更详细的演示视频,相识就是缘分,欢迎合作!!!所用技术栈前端vue.js框架支持:django数据库:mysql5.7数据库......
  • Python+Django的老年群体安全用药管理系统(角色:用户、医生、药师、管理员)(Pycharm Flas
    收藏关注不迷路,防止下次找不到!文章末尾有惊喜项目介绍Python+Django的老年群体安全用药管理系统(角色:用户、医生、药师、管理员)(PycharmFlaskDjangoVuemysql)项目展示详细视频演示请联系我获取更详细的演示视频,相识就是缘分,欢迎合作!!!所用技术栈前端......
  • 基于粒子群优化算法的计及需求响应的风光储能微电网日前经济调度(Python代码实现)
    目录0引言1计及风光储能和需求响应的微电网日前经济调度模型1.1风光储能需求响应都不参与的模型1.2风光参与的模型1.3风光和储能参与模型1.4风光和需求响应参与模型1.5风光储能和需求响应都参与模型 2需求侧响应评价2.1 负载率2.2可再生能源消纳率2.3用户......
  • Pytorch框架与经典卷积神经网络学习Day4|VGG原理与实战
    目录跟学视频1.原理1.1VGG网络诞生背景 1.2VGG网络结构 1.3VGG总结2.实战2.1model.py2.2model_train.py2.3model_test.py跟学视频炮哥带你学_Pytorch框架与经典卷积神经网络与实战1.原理VGG(VisualGeometryGroup)是一个深度卷积神经网络架构,广泛应用于计算机......
  • python中的列表和元组
    列表(List)可变性:列表是可变的(mutable),这意味着你可以在创建列表后添加、删除或更改其中的元素。定义方式:使用方括号[]来定义一个列表my_list=[1,2,3,"apple","banana"]操作:可以对列表执行多种操作,如追加、插入、删除等。追加元素:my_list.append(4)插入元素:my_list.ins......
  • 使用 Python 实现验证码自动识别
    验证码在防止自动化攻击中扮演了重要角色,而使用OCR(光学字符识别)技术可以实现对验证码内容的自动解析和提取。在本文中,我们将使用Python结合TesseractOCR来完成英文数字验证码的识别任务。环境配置安装Python和依赖库首先,确保您已经安装了Python。若尚未安装,请访问Pyt......
  • 使用 Python 实现验证码识别的简单教程
    验证码是用于验证用户是否为机器人的重要工具。在本教程中,我们将利用Python和TesseractOCR引擎编写一个程序,用于识别英文和数字组成的验证码。通过适当的图像预处理,我们可以有效地提高识别的准确性。环境配置更多内容访问ttocr.com或联系1436423940安装Python和必需库......