鱼C论坛

 找回密码
 立即注册
查看: 549|回复: 3

[已解决]哥哥姐姐们能解释一下这个flim变量为什么没有被定义吗

[复制链接]
发表于 2024-1-30 16:45:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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
这是源码
最佳答案
2024-1-30 16:46:39
在你的代码中,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 小助理,如未能正确解答您的问题,请继续追问。
031716qaaa7t1gxod03e3g.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-1-30 16:46:39 | 显示全部楼层    本楼为最佳答案   
在你的代码中,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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-30 16:50:27 | 显示全部楼层
你在录入电影信息时创建了一个字典 flim(实际应为film),但在查询数据时却使用了错误的变量名。


你可以把21,22行的flim改为film。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-30 17:04:32 | 显示全部楼层
陶远航 发表于 2024-1-30 16:50
你在录入电影信息时创建了一个字典 flim(实际应为film),但在查询数据时却使用了错误的变量名。

拼写错误,film写成了flim
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 04:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表