我创建的列表未根据python定义

时间:2019-04-28 08:29:29

标签: python

def mainMenu():
    print('1. Set up an item for auction\n \n2. Place a bid')
    print('Enter a number from the menu: ')
    menu1 = input('')    

    if menu1 == '1' :
        number = input('Registration number: ')
        name = input('Auctioneer\'s name: ')
        minimum = input('Minimum bid amount: $')
        itemDes = input('Item Description: ')
        bidCount = input('Number of bids: ')
        AuctioneerDet = input('Auctioneer\'s details: ')
        itemNum = random.randint(400,800)
        global itemList
        itemList = []
        itemList.append((minimum, itemDes, AuctioneerDet, bidCount, 
         itemNum))
   print('Confirm changes?')    
   print("'y' for yes and 'n' for no")
   confirm = input('')    
   if confirm == 'n' or confirm == 'N' :
       mainMenu()    
   if confirm == 'y' or confirm == 'Y' :
       input('Press any key to go back to main menu')
       mainMenu()

    if menu1 == '2' :
       print(itemList)
mainMenu()

我想使用if menu1 == '2'中itemList的元素,我该怎么做? 它说未定义itemList。 我希望用户首先通过输入1首先设置要拍卖的物品,然后返回主菜单并输入2,在这里用户可以查看他所下的出价,但是所有这些只能在列表之后进行被定义为。我不能为此做更多的工作,因为它一直说未定义itemList。 只是写了行print(itemList)来找出问题所在。这不是我要执行的实际任务,还有很多需要在清单上完成的任务。

5 个答案:

答案 0 :(得分:1)

您必须确保在到达menu1 ='2'之前已定义itemList

 def mainMenu():
    print('1. Set up an item for auction\n \n2. Place a bid')
    print('Enter a number from the menu: ')
    menu1 = input('')
    itemList = []  # <--- Define it here

    if menu1 == '1':
        number = input('Registration number: ')
        name = input('Auctioneer\'s name: ')
        minimum = input('Minimum bid amount: $')
        itemDes = input('Item Description: ')
        bidCount = input('Number of bids: ')
        AuctioneerDet = input('Auctioneer\'s details: ')
        itemNum = random.randint(400, 800)
        global itemList

        itemList.append((minimum, itemDes, AuctioneerDet, bidCount,
                         itemNum))

    if menu1 == '2':
        print(itemList)


mainMenu()

答案 1 :(得分:1)

您在情况1中定义了itemList

    if menu1 == '1' :
             .
             .
             .
        global itemList
-->     itemList = []
        itemList.append((minimum, itemDes, AuctioneerDet, bidCount, 

因此,您无法打印itemList

您可以在if statement之外定义项目列表。

像这样,您可能想要外部itemList。只需将其定义为全局变量

itemList = list()
def mainMenu():
    print('1. Set up an item for auction\n \n2. Place a bid')
    print('Enter a number from the menu: ')
    menu1 = input('')    

    if menu1 == '1' :
        number = input('Registration number: ')
        name = input('Auctioneer\'s name: ')
        minimum = input('Minimum bid amount: $')
        itemDes = input('Item Description: ')
        bidCount = input('Number of bids: ')
        AuctioneerDet = input('Auctioneer\'s details: ')
        itemNum = random.randint(400,800)
        global itemList
        itemList.append((minimum, itemDes, AuctioneerDet, bidCount, 
         itemNum))

     if menu1 == '2' :
        print(itemList)

mainMenu()

答案 2 :(得分:0)

如果输入不是'1',则永远不会定义itemList。在mainMenu()

的开头定义它
if menu1 == '1' :
        ...
        global itemList  # <-- why is this inside the conditional?
        itemList = []

答案 3 :(得分:0)

我认为您忘记了在mainMenu之前定义itemList。在mainMenu之前定义itemList,它应该可以工作。

itemList = []    
def mainMenu():
        print('1. Set up an item for auction\n \n2. Place a bid')
        print('Enter a number from the menu: ')
        menu1 = input('')    

        if menu1 == '1' :
            number = input('Registration number: ')
            name = input('Auctioneer\'s name: ')
            minimum = input('Minimum bid amount: $')
            itemDes = input('Item Description: ')
            bidCount = input('Number of bids: ')
            AuctioneerDet = input('Auctioneer\'s details: ')
            itemNum = random.randint(400,800)
            global itemList
            itemList = []
            itemList.append((minimum, itemDes, AuctioneerDet, bidCount, 
             itemNum))

         if menu1 == '2' :
            print(itemList)

    mainMenu()

答案 4 :(得分:0)

确保在第一个if条件之前定义列表。     (如果menu =='1') 这样可以很好地处理您的代码