鱼C论坛

 找回密码
 立即注册
查看: 1884|回复: 4

[已解决]类中变量在未赋值前引用,可是想不明白

[复制链接]
发表于 2021-5-7 17:26:49 | 显示全部楼层 |阅读模式

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

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

x
import keyboard
import time

bookinformation = []
bookinformation_number = 0

class Menu:
    def showmenu(self):
        print('''欢迎来到图书管理系统
                 添加图书 —— 1
                 查询图书 —— 2
                 借阅图书 —— 3
                 归还图书 —— 4
                 删除图书 —— 5''')
        if keyboard.is_pressed('1'):
            Bookmanager.addbooks()

class Bookmanager:
    def addbooks(self):
        while True:
                information = input('请依次输入书的名字、作者、类型、添加日期,以及备注(请用空格分隔不同的信息)\n')
                information += ' '
                information_mediator = []
                one_information = ''
                information_array = []
                whether_to_execute = 0

                for i in information:
                    if i == ' ':
                        whether_to_execute += 1

                if whether_to_execute >= 5:
                    for character in information:
                        if character.encode() == ' '.encode():
                            for character in information_mediator:
                                one_information += character
                            if one_information != '':
                                information_array.append(one_information)
                            one_information = ''
                            information_mediator = []
                        else:
                            information_mediator.append(character)

                    name = information_array[0]
                    author = information_array[1]
                    genre = information_array[2]
                    add_date = information_array[3]
                    marker = information_array[4]

                    del information_array[5:]

                    bookinformation.append(information_array)
                    bookinformation_number += 1

                    print('''成功添加图书
                                新书名字是 %s
                                作者是 %s
                                类型是 %s
                                添加日期是 %s
                                备注是 %s'''%(name,author,genre,add_date,marker))

                    print('如添加有误,请按F键;正确请按J键')        
                    while True:
                        try:
                            if keyboard.is_pressed('f'):
                                del bookinformation[bookinformation_number-1]
                                print('已删除此信息,开始重新添加')
                                bookinformation_number -= 1
                                break
                            elif keyboard.is_pressed('j'):
                                break
                        except:
                            print('')

                    time.sleep(0.2)

                    print('继续添加图书信息请按F键,退出请按J键')         
                    while True:
                        try:
                            if keyboard.is_pressed('f'):
                                break
                            elif keyboard.is_pressed('j'):
                                return
                        except:
                            print('')

                else:   
                    print('您的输入不完全或者有误,请重新输入')
    
                buffer = input('请忽略本行内容,继续敲击回车键')

test = Bookmanager()
test.addbooks()
print(bookinformation)

2021-05-07_172539.png

还有我迫不得已才加了个buffer,有大神有什么好的办法没?
最佳答案
2021-5-7 21:20:52
修改全局变量,声明关键字了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-7 21:20:52 | 显示全部楼层    本楼为最佳答案   
修改全局变量,声明关键字了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-7 21:44:24 | 显示全部楼层
Stubborn 发表于 2021-5-7 21:20
修改全局变量,声明关键字了吗?
import keyboard
import time

bookinformation = []
bookinformation_number = 0

class Menu:
    def showmenu(self):
        print('''欢迎来到图书管理系统
                 添加图书 —— 1
                 查询图书 —— 2
                 借阅图书 —— 3
                 归还图书 —— 4
                 删除图书 —— 5''')
        if keyboard.is_pressed('1'):
            Bookmanager.addbooks()

class Bookmanager:
    def addbooks(self):
        global bookinformation_number 
        global bookinformation
        while True:
                information = input('请依次输入书的名字、作者、类型、添加日期,以及备注(请用空格分隔不同的信息)\n')
                information += ' '
                information_mediator = []
                one_information = ''
                information_array = []
                whether_to_execute = 0

                for i in information:
                    if i == ' ':
                        whether_to_execute += 1

                if whether_to_execute >= 5:
                    for character in information:
                        if character.encode() == ' '.encode():
                            for character in information_mediator:
                                one_information += character
                            if one_information != '':
                                information_array.append(one_information)
                            one_information = ''
                            information_mediator = []
                        else:
                            information_mediator.append(character)

                    name = information_array[0]
                    author = information_array[1]
                    genre = information_array[2]
                    add_date = information_array[3]
                    marker = information_array[4]

                    del information_array[5:]

                    bookinformation.append(information_array)
                    bookinformation_number += 1

                    print('''成功添加图书
                                新书名字是 %s
                                作者是 %s
                                类型是 %s
                                添加日期是 %s
                                备注是 %s'''%(name,author,genre,add_date,marker))

                    print('如添加有误,请按F键;正确请按J键')        
                    while True:
                        try:
                            if keyboard.is_pressed('f'):
                                del bookinformation[bookinformation_number-1]
                                print('已删除此信息,开始重新添加')
                                bookinformation_number -= 1
                                break
                            elif keyboard.is_pressed('j'):
                                break
                        except:
                            print('')

                    time.sleep(0.2)

                    print('继续添加图书信息请按F键,退出请按J键')         
                    while True:
                        try:
                            if keyboard.is_pressed('f'):
                                break
                            elif keyboard.is_pressed('j'):
                                return
                        except:
                            print('')

                else:   
                    print('您的输入不完全或者有误,请重新输入')
    
                buffer = input('请忽略本行内容,继续敲击回车键')

test = Bookmanager()
test.addbooks()
print(bookinformation)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-7 21:45:16 | 显示全部楼层
Stubborn 发表于 2021-5-7 21:20
修改全局变量,声明关键字了吗?

谢谢,我查了下资料,解决了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-7 21:51:18 | 显示全部楼层
YouCam 发表于 2021-5-7 21:45
谢谢,我查了下资料,解决了

OK
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-15 23:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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