Python 2.7 “名称错误”;“输入名称”;没有定义

Python 2.7 “名称错误”;“输入名称”;没有定义,python-2.7,nameerror,Python 2.7,Nameerror,我浏览了大量其他未定义的帖子,却找不到我的错误,我确信这是件愚蠢的事情,我会觉得自己像个白痴。我是在我的第一个编程课在大学里,所以我为我的无知道歉。我相信这是我的代码中唯一导致错误的部分,如果需要更多,我会添加广告。提前谢谢你 def main(): endProgram = 'no' playerOne = 'no' playerTwo = 'no' playerOne, playerTwo = inputNames(playerOne, playerTwo) de

我浏览了大量其他未定义的帖子,却找不到我的错误,我确信这是件愚蠢的事情,我会觉得自己像个白痴。我是在我的第一个编程课在大学里,所以我为我的无知道歉。我相信这是我的代码中唯一导致错误的部分,如果需要更多,我会添加广告。提前谢谢你

def main():
    endProgram = 'no'
    playerOne = 'no'
    playerTwo = 'no'

playerOne, playerTwo = inputNames(playerOne, playerTwo)

def inputNames(playerOne, playerTwo):
    playerOne = raw_input('Enter number your name: ')
    print 'Welcome', playerOne, 'you are player one!'

    playerTwo = raw_input('Enter number your name: ')
    print 'Welcome', playerOTwo, 'you are player two!'

    return playerOne, playerTwo

正如jonrsharpe所评论的,您需要在调用函数之前定义它:

def inputNames():
    playerOne = raw_input('Enter number your name: ')
    print 'Welcome', playerOne, 'you are player one!'

    playerTwo = raw_input('Enter number your name: ')
    print 'Welcome', playerTwo, 'you are player two!'

    return playerOne, playerTwo

def main():
    endProgram = 'no'
    playerOne = 'no'
    playerTwo = 'no'

playerOne, playerTwo = inputNames()
请注意,您定义的输入参数在本例中是错误的,因为:

  • 在这种情况下不需要它们
  • 调用函数时没有向参数传递任何值,因为在调用inputNames()之前,函数外部没有定义playerOne和playerTwo。
  • 另外,您在第12行中犯了一个错误。显然,playerOTwo没有定义:

    print 'Welcome', playerOTwo, 'you are player two!'
    

    替代解决方案 最初,您正在使用基于参数的函数进行练习。此替代解决方案将为参数的使用提供一些信息:

    # Playernum is supposed to be an integer
    def inputName(playernum):
        # This will trigger AssertionError if parameter is not integer
        assert type(playernum) == int
    
        name = raw_input('Enter your name: \n') # New line character='\n'
        print 'Welcome', name, 'you are player' + str(playernum)
        # return statement ends function if executed
        return name
    
    
    def main():
        endProgram = 'no'
        playerOne = 'no'
        playerTwo = 'no'
    
    
    playerOne, playerTwo = inputName(1), inputName(2)
    

    在您尝试调用它之前,它不会被定义!作为旁注,请记住坚持并使用
    下划线\u大小写
    。另外,如果您正在学习python,请先学习python 3,因为python 2在将来将不受支持。