首先学习了文件的运用
文件的打开
有不同的打开模式,读写,只读,写等,默认为只读模式
文件的关闭
<变量名>.close()
例如:
tf = open("f.txt","rt")
print(tf.readlines())
tf.close()
文件的读取
<f>.read(size=-1) #读入前size长度
<f>.readline(size=-1)#读入一行的内容,如果给出参数,读入改行前size长度
<f>.readlines(hint=-1) #读入文件所有行,以每行为元素形成列表,如果给出参数,读入前hint行
数据的文件写入
<f>.write(s)
<f>.writelines(lines)
<f>.seek(offset) #offset 0 - 文件开头 1- 当前位置 2 - 文件结尾
自动轨迹的绘制
效果如下:
#data.txt
300,0,144,1,0,0
300,0,144,0,1,0
300,0,144,0,0,1
300,0,144,1,1,0
300,0,108,0,1,1
184,0,72,1,0,1
184,0,72,0,0,0
184,0,72,0,0,0
184,0,72,0,0,0
184,1,72,1,0,1
184,1,72,0,0,0
184,1,72,0,0,0
184,1,72,0,0,0
184,1,72,0,0,0
184,1,720,0,0,0
#自动轨迹绘制的代码
import turtle as t
t.title('自动轨迹绘制')
t.setup(800,600,0,0)
t.pencolor("red")
t.pensize(5)
datals = []
f = open("data.txt")
for line in f :
line = line.replace("\n","")
datals.append(list(map(eval,line.split(","))))
f.close()
#自动绘制
for i in range(len(datals)):
t.pencolor(datals[i][3],datals[i][4],datals[i][5])
t.fd(datals[i][0])
if datals[i][1]:
t.right(datals[i][2])
else:
t.left(datals[i][2])
t.done()
通讯录系统(不连接数据库进行增删查改的操作)
- 框架搭建
- 新增名片
- 显示所有名片
- 查询名片
- 查询成功后修改、删除名片
- 让 Python 程序能够直接运行
新建 cards_main.py 保存 主程序功能代码
- 程序的入口
- 每一次启动名片管理系统都通过 main 这个文件启动
新建 cards_tools.py 保存 所有名片功能函数
- 将对名片的 新增、查询、修改、删除 等功能封装在不同的函数中
def show_menu():
"""显示菜单
"""
pass
def new_card():
"""新建名片
"""
print("-" * 50)
print("功能:新建名片")
def show_all():
"""显示全部
"""
print("-" * 50)
print("功能:显示全部")
def search_card():
"""搜索名片
"""
print("-" * 50)
print("功能:搜索名片")
在cards_main.py中:
from Cards import cards_tolls #Card为文件夹的名字,将cards_tolls.py中的函数调用
def show_menu():
flag = True
print("\t\t\t\t欢迎使用yzl名片管理系统")
while (flag):
cards_tolls.show_menu()
print("1.新建名片\t2.显示全部\t3.查询名片\t\t\t0.退出系统")
choice = input("请选择菜单(0-3):")
if choice in ["1","2","3"]:
if choice == "1":
cards_tolls.new_card()
pass
elif choice == "2":
cards_tolls.show_all()
pass
elif choice == "3":
cards_tolls.search_card()
pass
elif choice == "0":
print("感谢使用本系统。")
pass
break
else:
print("输入错误,请重新输入:")
select = input("是否需要继续操作软件(Y/N)?")
if select == "Y":
flag = True
pass
else:
flag = False
pass
pass
pass
pass
show_menu()
cards_tolls.py
card_list = []
def show_menu():
print("*" * 50)
print("欢迎使用【菜单管理系统】V1.0")
print("")
print("1. 新建名片")
print("2. 显示全部")
print("3. 查询名片")
print("")
print("0. 退出系统")
print("*" * 50)
pass
def new_card():
print("-" * 50)
print("功能:新建名片")
name = input("请输入姓名:")
phone = input("请输入电话:")
qq = input("请输入 QQ 号码:")
email = input("请输入邮箱:")
card_dict = {"name": name,
"phone": phone,
"qq": qq,
"email": email}
card_list.append(card_dict)
print(card_list)
print("成功添加 %s 的名片" % card_dict["name"])
def show_all():
print("-" * 50)
print("功能:显示全部")
if len(card_list) == 0:
print("提示:没有任何名片记录")
return
else:
for name in ["姓名", "电话", "QQ", "邮箱"]:
print(name, end="\t\t\t\t")
print("")
print("=" * 70)
for card_dict in card_list:
print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"],
card_dict["phone"],
card_dict["qq"],
card_dict["email"]))
def search_card():
print("-" * 50)
print("功能:搜索名片")
# 1. 提示要搜索的姓名
find_name = input("请输入要搜索的姓名:")
# 2. 遍历字典
for card_dict in card_list:
if card_dict["name"] == find_name:
print("姓名\t\t\t电话\t\t\tQQ\t\t\t邮箱")
print("-" * 50)
print("%s\t\t\t\t%s\t\t\t\t%s\t\t\t\t%s" % (
card_dict["name"],
card_dict["phone"],
card_dict["qq"],
card_dict["email"]))
print("-" * 50)
def deal_card(find_dict):
action_str = input("请选择要执行的操作 "
"[1] 修改 [2] 删除 [0] 返回上级菜单")
if action_str == "1":
find_dict["name"] = input("请输入姓名:")
find_dict["phone"] = input("请输入电话:")
find_dict["qq"] = input("请输入QQ:")
find_dict["email"] = input("请输入邮件:")
print("%s 的名片修改成功" % find_dict["name"])
print("修改成功")
elif action_str == "2":
card_list.remove(find_dict)
print("删除成功")
elif action_str == "0":
return
deal_card(card_dict)
break
else:
print("没有找到 %s" % find_name)
刚开始时,在调用修改删除函数的时候放错了位置,使调用出错。要将 def deal_card(find_dict)函数放在查找的函数def search_card()里面,嵌套函数,然后在查找到后才能调用deal_card(find_dict)函数
实验结果: