Python 模块的参数可以用字典么?哪位大神看看我的代码哪里有问题,报错信息也在的

mygzhh 2018-05-13 11:17:16
需要实现的功能是:
三级菜单
1.从文本内读出选项
2.查询每一级的选项,并能对选项进行增/删/改功能
3.每一级可以退出程序或者返回上一层

思路

三个操作模块,分别是 增/删/改 功能
三个查询模块,分别对每一级别进行查询

报错信息:
Traceback (most recent call last):
File "E:/python/day8/three menu.py", line 79, in <module>
shen()
File "E:/python/day8/three menu.py", line 37, in shen
elif city == 'a':FileAppend(menu)
File "E:/python/day8/three menu.py", line 17, in FileAppend
ExChange()
File "E:/python/day8/three menu.py", line 47, in ExChange
FileWrite.write(menu)
TypeError: expected a string or other character buffer object



# -*- coding: UTF-8 -*-
#__filename:three menu
#__time:2018/5/13 22:04

import io
import os

FileRead = io.open('city','r',encoding='utf8')
FileWrite= open('city_backup','w+')
menu = eval(FileRead.read())

def FileAppend(MenuAppend):

CityAppend = raw_input("请输入添加的城市",)
MenuAppend['CityAppend']={}
ExChange()

def FileDel(MenuDel):
CityDel = raw_input("请输入你要删除的城市",)
MenuDel.pop('CityDel')
ExChange()

def FileChance(MenuChance):
CityChance = raw_input("请输入被替换的城市",)
if CityChance in MenuChance : CityChanced = raw_input("请输入替换的城市",)
MenuChance['CityChanced'] = MenuChance['CityChance']
MenuChance.pop('CityChance')
ExChange()

def shen():
for i in menu:print (i)
city = raw_input('请输入你选择的省份',)
if city == 'q': exit()
elif city == 'd':FileDel(menu)
elif city == 'c':FileChance(menu)
elif city == 'a':FileAppend(menu)
elif (city in menu) and (menu[city]!=0): shi(city)
elif menu[city]==0 :
print "该省下面没有市,请添加"
FileAppend(menu[city])
else:
print '请输入正确的省份'
shen()

def ExChange():
FileWrite.write(menu)
FileRead.close()
FileWrite.close()
os.remove('FileRead')
os.renames('FileWrite','FileRead')

def shi(city):
for i in menu[city]: print (i)
city1 = raw_input('请输入你选择的市或退出程序(Q)或返回上一级菜单(B)').strip()
if city1 == 'b':shen()
elif city1 == 'q':exit()
elif city1 == 'd':FileDel(menu[city])
elif city1 == 'c':FileChance(menu[city])
elif city1 == 'a':FileAppend(menu[city])
elif (city1 in menu[city])and (menu[city][city1]!=0):xian(city,city1)
elif menu[city][city1]==0 : FileAppend( menu[city][city1])
else:
'请输入正确的市'
shi(city)

def xian(city,city1):
for i in menu[city][city1]: print (i)
city2 = raw_input('请选择退出(Q)或返回(B) ')
if city2 == 'b': shi(city)
elif city2 == 'q': exit()
elif city2 == 'd':FileDel(menu[city][city1])
elif city2 == 'c':FileChance(menu[city][city1])
elif city2 == 'a':FileAppend(menu[city][city1])
else:
'请输入正确的区或县'
xian(city, city1)

shen()
...全文
869 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
mygzhh 2018-05-14
  • 打赏
  • 举报
回复
引用 1 楼 qq_26877377 的回复:
def ExChange(): FileWrite.write(menu) FileRead.close() FileWrite.close() os.remove('FileRead') os.renames('FileWrite','FileRead') 这个加一行,应该是menu类型错误了,然后你在改吧 def ExChange(): print(type(menu)) FileWrite.write(menu)
哈哈 懂了 menu的类型是字典,写入文件的应该要是字符串或,谢谢大佬
  • 打赏
  • 举报
回复
def ExChange(): FileWrite.write(menu) FileRead.close() FileWrite.close() os.remove('FileRead') os.renames('FileWrite','FileRead') 这个加一行,应该是menu类型错误了,然后你在改吧 def ExChange(): print(type(menu)) FileWrite.write(menu)

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧