3117975470 发表于 2024-1-30 16:45:22

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

源码如下,当功能为一时输入电影的各项信息,然后再进入功能二来查找电影,但是报错film变量也就是大字典的前键没被定义这是为什么,顺便问一下如何测试python中的程序节点,本人大一学过c语言可以在vs一点点测试看问题,但是python编译器不知道如何测试{:5_91:} {:5_92:} 欢迎进入鱼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 = flim
    functions = int(input('请输入想要的功能(1/2/3)'))
    #print(database)

if functions == 2:
    names = input('请输入电影名称:')
    if names in film:#判断一个键是否在字典中,用户输入的电影名字是否与数据库中的名字完全相符
      print('电影名称:',names,
            '上映日期:',films['日期'],
            '导演名单:',films['导演'],
            '演员名单:',films['演员'],
            '当前评分:',films['评分'])
    else:
      for each in list(film.keys()):#从零开始遍历字典键,字典键对象转化成列表
            if names in each:
                print('电影名称:',each,
            '上映日期:',films['日期'],
            '导演名单:',films['导演'],
            '演员名单:',films['演员'],
            '当前评分:',films['评分'])
                break
      else:
            print('查无此片!')

if functions == 3:
    None

这是源码

FishC 发表于 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 = film

    functions = int(input('请输入想要的功能(1/2/3): '))

if functions == 2:
    names = input('请输入电影名称:')
    if names in database:
      film = database
      print('电影名称:', names)
      print('上映日期:', film['日期'])
      print('导演名单:', film['导演'])
      print('演员名单:', film['演员'])
      print('当前评分:', film['评分'])
    else:
      for each in database.keys():
            if names in each:
                film = database
                print('电影名称:', each)
                print('上映日期:', film['日期'])
                print('导演名单:', film['导演'])
                print('演员名单:', film['演员'])
                print('当前评分:', film['评分'])
                break
      else:
            print('查无此片!')

if functions == 3:
    None

至于如何测试Python程序的每个节点,可以使用Python中的调试器来逐行运行代码并查看变量值。常用的调试器有pdb和PyCharm等。你可以在需要进行调试的地方插入断点,然后运行程序时会停在断点处,使用调试器的命令来查看代码执行过程和变量的值。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

陶远航 发表于 2024-1-30 16:50:27

你在录入电影信息时创建了一个字典 flim(实际应为film),但在查询数据时却使用了错误的变量名。


你可以把21,22行的flim改为film。。。

陶远航 发表于 2024-1-30 17:04:32

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




拼写错误,film写成了flim
页: [1]
查看完整版本: 哥哥姐姐们能解释一下这个flim变量为什么没有被定义吗