|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
源码如下,当功能为一时输入电影的各项信息,然后再进入功能二来查找电影,但是报错film变量也就是大字典的前键没被定义这是为什么,顺便问一下如何测试python中的程序节点,本人大一学过c语言可以在vs一点点测试看问题,但是python编译器不知道如何测试  - 欢迎进入鱼c影评小程序
- 1.数据录入
- 2.查询数据
- 3.退出程序
- 请输入想要的功能(1/2/3)1
- 请输入电影名称:z
- 请输入上映日期:
- 请输入导演名字(多人请用/分隔)知
- 请输入演员名字(多人请用/分隔)2
- 请输入电影评分:2
- 请问是否继续录入:2
- 请输入想要的功能(1/2/3)2
- 请输入电影名称:z
- Traceback (most recent call last):
- File "E:\python\存储电影数据的小程序。.py", line 28, in <module>
- if names in film:#判断一个键是否在字典中,用户输入的电影名字是否与数据库中的名字完全相符
- NameError: name 'film' is not defined
- >>> film
- Traceback (most recent call last):
- File "<pyshell#1>", line 1, in <module>
- film
- NameError: name 'film' is not defined
- >>>
复制代码 这是报错代码
- print('欢迎进入鱼c影评小程序')
- print('1.数据录入')
- print('2.查询数据')
- print('3.退出程序')
- '''一个字典的所有项作为这个电影的各种信息,
- 然后信息字典作为数据字典的值与与之相应的字典配对'''
- database = {}
- information_module = ['日期','导演','演员','评分','继续否']
- individual_information = []
- #informations = information.fromkeys(('日期','导演','演员','评分','','继续否'),1)#对信息字典进行初始化
- #fromkeys()是返回一个新的字典,需要一个新的变量来接受
- functions = int(input('请输入想要的功能(1/2/3)'))
- if functions == 1:
- names = input('请输入电影名称:')
- individual_information.append(input('请输入上映日期:'))
- individual_information.append(input('请输入导演名字(多人请用/分隔)'))
- individual_information.append(input('请输入演员名字(多人请用/分隔)'))
- individual_information.append(input('请输入电影评分:'))
- individual_information.append(input('请问是否继续录入:'))
- flim = dict(zip(information_module,individual_information))
- database[names] = flim
- functions = int(input('请输入想要的功能(1/2/3)'))
- #print(database)
- if functions == 2:
- names = input('请输入电影名称:')
- if names in film:#判断一个键是否在字典中,用户输入的电影名字是否与数据库中的名字完全相符
- print('电影名称:',names,
- '上映日期:',films[names]['日期'],
- '导演名单:',films[names]['导演'],
- '演员名单:',films[names]['演员'],
- '当前评分:',films[names]['评分'])
- else:
- for each in list(film.keys()):#从零开始遍历字典键,字典键对象转化成列表
- if names in each:
- print('电影名称:',each,
- '上映日期:',films[each]['日期'],
- '导演名单:',films[each]['导演'],
- '演员名单:',films[each]['演员'],
- '当前评分:',films[each]['评分'])
- break
- else:
- print('查无此片!')
- if functions == 3:
- None
复制代码
这是源码
在你的代码中,flim变量在功能为1的部分被定义为一个字典,然后赋值给了database变量。但是在功能为2的部分,你使用了一个没有被定义的变量film来判断电影名称是否存在于字典中。
解决这个问题很简单,你只需要将film改为database即可。修改后的代码如下:
- print('欢迎进入鱼c影评小程序')
- print('1.数据录入')
- print('2.查询数据')
- print('3.退出程序')
- database = {}
- information_module = ['日期', '导演', '演员', '评分', '继续否']
- individual_information = []
- functions = int(input('请输入想要的功能(1/2/3): '))
- if functions == 1:
- names = input('请输入电影名称:')
- individual_information.append(input('请输入上映日期:'))
- individual_information.append(input('请输入导演名字(多人请用/分隔):'))
- individual_information.append(input('请输入演员名字(多人请用/分隔):'))
- individual_information.append(input('请输入电影评分:'))
- individual_information.append(input('请问是否继续录入:'))
- film = dict(zip(information_module, individual_information))
- database[names] = film
- functions = int(input('请输入想要的功能(1/2/3): '))
- if functions == 2:
- names = input('请输入电影名称:')
- if names in database:
- film = database[names]
- print('电影名称:', names)
- print('上映日期:', film['日期'])
- print('导演名单:', film['导演'])
- print('演员名单:', film['演员'])
- print('当前评分:', film['评分'])
- else:
- for each in database.keys():
- if names in each:
- film = database[each]
- print('电影名称:', each)
- print('上映日期:', film['日期'])
- print('导演名单:', film['导演'])
- print('演员名单:', film['演员'])
- print('当前评分:', film['评分'])
- break
- else:
- print('查无此片!')
- if functions == 3:
- None
复制代码
至于如何测试Python程序的每个节点,可以使用Python中的调试器来逐行运行代码并查看变量值。常用的调试器有pdb和PyCharm等。你可以在需要进行调试的地方插入断点,然后运行程序时会停在断点处,使用调试器的命令来查看代码执行过程和变量的值。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
|
-
|