Python 错误str';对象不可调用

Python 错误str';对象不可调用,python,python-3.x,Python,Python 3.x,我不明白我是如何得到这个错误的,有人可以帮助我: import time import os import xlwt from datetime import datetime num = 0 def default(): global num global model global partnum global serialnum global countryorigin time.sleep(1) print ("Model: ")

我不明白我是如何得到这个错误的,有人可以帮助我:

import time
import os
import xlwt
from datetime import datetime
num = 0

def default():
    global num
    global model
    global partnum
    global serialnum
    global countryorigin

    time.sleep(1)
    print ("Model: ")
    model = input()
    print ()
    print ("Part number: ")
    partnum = input()
    print()
    print ("Serial Number: ")
    serialnum = input()
    print ()
    print ("Country of origin: ")
    countryorigin = input()
    print ("Thanks")
    num = num+1
    xlwt()

def xlwt():
    print ("Do you want to write to excel?")
    excel = input()
    if excel == "y" or "yes":
        excel()
    else:
        print ("Bye")
        sys.exit()

def excel():
    print ("Enter a spreadsheet name")
    name = input()
    wb = xlwt.Workbook()
    ws = wb.add_sheet(name)

    ws.write(0,0,"Model")
    ws.write(0,1,"Part Number")
    ws.write(0,2,"Serial Number")
    ws.write(0,3,"Country Of Origin")

    ws.write(num,0,model)
    ws.write(num,1,partnum)
    ws.write(num,2,serialnum)
    ws.write(num,3,countryorigin)

    ws.save(name)

def custom():
    print()

def main():
    print ("Welcome")
    print ()
    print ("The deafult catagories are: Model, Part Number, Serial Number,"
           "country of origin")
    time.sleep(1)
    print()
    dorc()

def dorc():    
    print ("Would you like to use the default or custom?")
    dorc = input ()
    if dorc == "default":
        default()
    elif dorc == "custom":
        custom()
    else:
        print ("Invalid input")
        dorc()

main()
当我执行此操作时,我得到一个错误
str对象不可调用

您有一个名为
excel()
的函数和一个名为
excel
的局部变量,并为其分配了一个字符串

您不能这样做,而期望该函数仍然可用。本地名称
excel
屏蔽了全局名称,因此
excel()
尝试调用
input()
返回的字符串结果

重命名变量:

print ("Do you want to write to excel?")
choice = input()
if choice in ("y", "yes"):
    excel()
请注意,我还更正了您的变量测试
excel==“y”或“yes”
并不像您认为的那样,编程语言逻辑与英语语法规则并不完全相同。看

接下来,对于导入的模块和函数,使用名称
xlwt
也会犯同样的错误:

import xlwt

# ...

def xlwt():
    # ...
模块和函数都是全局名称,名称只能指向导入的模块或创建的函数,不能同时指向两者。将函数重命名为其他函数,否则以下行也将失败:

wb = xlwt.Workbook()

因为
xlwt
绑定到您的函数,因为该函数是在模块导入之后定义的。

excel=input()
,然后
excel()
。将函数名与变量混合我现在已经解决了这个问题,谢谢:excel wb=xlwt.Workbook()中的第43行“这个错误是什么?”AttributeError:“function”对象没有属性“Workbook”@LeoRogers:Python程序中的每个名称都位于同一命名空间中。
xlwt
不能既是导入的模块又是创建的函数。请重命名函数。