首页 > 想请教一个关于for的问题

想请教一个关于for的问题

为什么在第一个for循环里可以列出所有的元素,但在第二个for循环里只能列出第一个元素呢?

# -*- coding: utf-8 -*-
#from collections import OrderedDict
import re
class inventory(object):
    def __init__(self):
        self.inventory_list = []
        #self._index = 1
    def inventory_add(self, name, item):
        self.inventory_list.append((name, item))
        #self._index += 1
    def inventory_del(self, name, item):
        self.inventory_list.remove((name, item))
    def print_inventory(self):
        print u'你拥有:'
        for index, value in enumerate(self.inventory_list, 1):            
            print index, '.', value[0]
        return self._judgement()        
    
    def _judgement(self):
        print u'输入0返回选择场景,输入具体数字显示详细描述。'
        self._choice = raw_input(">" )
        #print self.inventory_list
        #if re.match(r'[0-9]+', self._choice):
        #self._ok_choice = int(self._choice)
            #if self._ok_choice == 0:
                #self.print_inventory()
            #else:
        for key, name in enumerate(self.inventory_list, 1):
            print key, name[0]
            if int(self._choice) == key:
                print key
                self.a = name[1]
                self.a.printself()
                self.print_inventory()
                return self._judgement()
            else:
                print 'Wrong!'
                return self._judgement()
        #else:
            #print 'Wrong!'
            #return self._judgement()

class mobilephone(object):
    description = u'一部手机,话费和电量应该充足吧'
    def printself(self):
        print self.description
        
class money(object):
    description = u'30元'
    def printself(self):
        print self.description
        
class student_card(object):
    description = u'余额还够吧?'
    def printself(self):
        print self.description        
        
inventory = inventory()
inventory.inventory_add(u'手机', mobilephone())
inventory.inventory_add(u'钱', money())
inventory.inventory_add(u'学生卡', student_card())
print inventory.inventory_list
inventory.print_inventory()

其实楼主的代码是错误的, 并没有实现你想要的功能.

_judgement 这个方法中 遍历 内容时, 当当前的key不等于用户输入的内容时, 就会重新调用 _judgement 这个方法, 很明显这个逻辑是有问题的.
你应该遍历完才知道, 用户输入的这个, 是不是在列表中, 而不是根据其中某一个和它不相等就认为它输入的是错误的.

【热门文章】
【热门文章】