Python程序设计之文件

编写程序,根据文件data.txt中的数据,使用turtle库来动态绘制图形路径。

import turtle

def main():
    # 设置窗口信息
    turtle.setup(1024,768,0,0)     # 设置窗体大小及位置
    # 4个参数中后两个可选(后两个省略时默认窗口在屏幕正中心)
    # setup()不是必须的
    # 设置画笔
    turtle.pencolor("red")  # 画笔颜色
    turtle.width(5)     # 画笔粗细
    turtle.speed(5)     # 画笔移动速度
    # 读取文件
    result=[]
    file = open("data.txt", "r")    # r:以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式
    for line in file:   # 将文件中的数据通过迭代送到数组中
        result.append(list(map(float, line.split(','))))
        # map的第一个参数接收一个函数名,第二个参数接收一个可迭代对象
    print(result)
    #动态绘制
    for i in range(len(result)) :
        turtle.pencolor(result[i][3],result[i][4],result[i][5]) #画笔颜色
        turtle.forward(result[i][0])    #画笔向前前进
        if result[i][1]:
            turtle.rt(result[i][2])     #画笔向右旋转
        else:
            turtle.lt(result[i][2])     #画笔向左旋转
    turtle.goto(0,0)    #从当前点去到0,0

if __name__  == '__main__':
    main()

在这里插入图片描述
在这里插入图片描述
编写程序将电子邮件EmailAddressBook.txt和电话薄TeleAddressBook.txt合并为一个完整的通讯录AddressBook.txt

在这里插入图片描述

给出程序代码如下。

# 利用字符串和列表将两个通讯录文本合并为一个文本
def main():
    file1=open('TeleAddressBook.txt', 'r') # r:以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式
    file2=open('EmailAddressBook.txt', 'r') # r:以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式

    file1.readline()  # 跳过第一行
    file2.readline()  # 跳过第一行
    lines1 = file1.readlines()  # readlines()方法用于读取所有行(直到结束符 EOF)并返回列表,
    lines2 = file2.readlines()  # readlines()方法用于读取所有行(直到结束符 EOF)并返回列表,

    list1_name = []       # 用作 存储
    list1_tele = []      # 用作 存储
    list2_name = []      # 用作 存储
    list2_email = []     # 用作 存储

    for line in lines1:  # 获取第一个文本中的姓名和电话信息
        elements = line.split()
        list1_name.append(elements[0])
        list1_tele.append(elements[1])

    for line in lines2: # 获取第二个文本中的姓名和邮件信息
        elements = line.split()
        list2_name.append(elements[0])
        list2_email.append(elements[1])

    ### 开始处理 ###
    lines = []
    lines.append('姓名\t      电话      \t   邮箱\n')

    # 按索引方式遍历姓名列表1
    for i in range(len(list1_name)):
        s=''
        if list1_name[i] in list2_name:
            j = list2_name.index(list1_name[i]) # 找到姓名列表1对应列表2中的姓名
            s = '\t'.join([list1_name[i], list1_tele[i], list2_email[j]])
            # join方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
            s += '\n'
        else:
            s = '\t'.join([list1_name[i], list1_tele[i], '    -----   '])
            # join方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
        lines.append(s)

    # 处理姓名列表2中剩余的姓名
    for i in range(len(list2_name)):
        s=''
        if list2_name[i] not in list1_name:
            s = '\t'.join([list2_name[i], '    -----   ', list2_email[i]])
            # join方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
            s += '\n'
        lines.append(s)

    file3 = open('AddressBook.txt', 'w')
    # w:打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。
    # 如果该文件不存在,创建新文件。
    file3.writelines(lines) # 将之前得到的结果写入
    file3.close()   # 关闭文件
    file1.close()   # 关闭文件
    file2.close()   # 关闭文件

    print("地址簿合并完成!")

if __name__ == "__main__":
    main()
  • 8
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

只爭朝夕不負韶華

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

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

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

打赏作者

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

抵扣说明:

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

余额充值