繁体   English   中英

从 txt 读取行或在 Python 3.10 中使用字典时出现问题

[英]Problem with reading lines from txt or with dictionary usage in Python 3.10

出于 OOP 学习的原因,(目前)创建了一个包含区域的字典 class 和一个 class ,您可以在其中移动访问受限的区域,例如,从区域 3 您只能 go 到区域 2、4、6、8 或从区域 10 到区域 9。当我想为区域添加描述时出现问题。 对于少数地区,它读取错误的行并且找不到原因。

(...)
class Territory(object):

    def __init__(self, **regions):
        player = Player()
        self.player = player
        regions_file = open("regiony.txt", "r")
        regions_description = regions_file.readlines()
        regions = { 
            1: {1: 2, "desc": regions_description[2]},
            2: {1: 3, "desc": regions_description[3],
                4: 1, "desc": regions_description[1]}, # prints regions_description[3] instead
            3: {1: 8, "desc": regions_description[8], # prints regions_description[4] instead
                2: 6, "desc": regions_description[6], # prints regions_description[6] instead
                3: 4, "desc": regions_description[4], # prints regions_description[8] instead
                4: 2, "desc": regions_description[2]},
            4: {2: 3, "desc": regions_description[3],
                4: 5, "desc": regions_description[5]},
            5: {1: 4, "desc": regions_description[4]}, # prints regions_description[6] instead
            6: {1: 7, "desc": regions_description[7],
                3: 3, "desc": regions_description[3]},
            7: {3: 8, "desc": regions_description[8], # prints regions_description[4] instead
                4: 6, "desc": regions_description[6]},
            8: {1: 9, "desc": regions_description[9],
                2: 7, "desc": regions_description[7],
                4: 3, "desc": regions_description[3]},
            9: {1: 10, "desc": regions_description[10],
                4: 8, "desc": regions_description[8]}, # prints regions_description[4] instead
            10: {4: 9, "desc": regions_description[9]}}
        self.__dict__.update(regions)
        regions_file.close()


class Moving(object):

    def __init__(self):
        self.territory = Territory()
        self.regions = self.territory.__dict__

    def movement(self):
        region = 1
        path = 1
        POSSIBLE_PATHS = (1, 2, 3, 4, 0)
        print(region)
        print(self.regions[region]["desc"])
        while path:
            try:
                path = int(input("Which path you take? "))
                if path in POSSIBLE_PATHS:       
                    region = self.regions[region][path]
                    print(region)
                    print(self.regions[region]["desc"])
                elif path == 0:
                        break
            except:
                while path not in POSSIBLE_PATHS: 
                    path = int(input("Which path you take? "))
(...)

regiony.txt现在只是:

test1
test2
(...)
test9
test10

试图将regions_fileregions_description移动到def movement并使用print(regions_description[region]) ,但效果是一样的。

几个小时前无法解决它,但这个想法是在我想在慢跑时提神醒脑的时候产生的:) 似乎是一个菜鸟错误

以防将来其他人遇到这个问题,将"desc": regions_description[x]添加到每一行是错误的,它应该只在主键的行中。

            1: {1: 2, "desc": regions_description[1]},
            2: {1: 3, "desc": regions_description[2],
                4: 1},
            3: {1: 8, "desc": regions_description[3],
                2: 6,
                3: 4,
                4: 2},
            4: {2: 3, "desc": regions_description[4],
                4: 5},
            5: {1: 4, "desc": regions_description[5]},
            6: {1: 7, "desc": regions_description[6],
                3: 3},
            7: {3: 8, "desc": regions_description[7],
                4: 6},
            8: {1: 9, "desc": regions_description[8],
                2: 7,
                4: 3},
            9: {1: 10, "desc": regions_description[9],
                4: 8},
            10: {4: 9, "desc": regions_description[10]}}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM