基于用户输入添加图书至库存列表时遇“str not callable”错误求助
问题解决:添加图书到库存列表时的"str not callable"错误
错误原因
你代码里的核心问题是错误地将列表的append方法当成变量赋值,而不是调用该方法。具体来说这一行:
inventory.append = (title, author, isbn, callnumber, stock, loaned)
这种写法会把元组覆盖掉原本的append方法引用,后续任何对append的调用都会因为它变成非可调用的元组/字符串类型,从而抛出"str not callable"错误。
修正后的代码
# Add a book, based on user input def add_book(): # purpose: add a book print() print("Adding a New Book..") print() title = input("Title> ") author = input("Author> ") isbn = input("ISBN> ") callnumber = input("CallNumber> ") # 库存和借出数量建议转为整数,符合数值类型的实际用途 stock = int(input("Stock> ")) loaned = int(input("Loaned> ")) # 正确调用append方法,传入图书信息元组 inventory.append((title, author, isbn, callnumber, stock, loaned))
额外注意事项
- 必须确保
inventory是预先在函数外定义好的列表,比如初始化语句:inventory = [],否则会触发"name 'inventory' is not defined"错误。 - 如果stock和loaned允许非整数值(如小数),可以改用
float()转换;若业务需求确实需要保留字符串形式,直接保留input()的返回值即可。
内容的提问来源于stack exchange,提问作者ozwrangler
相关产品推荐
相关产品推荐

