编写程序,根据文件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()