Python:有没有更简单的方法来编写这个脚本?

2024-09-28 22:27:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力使自我识别码显示精确值。我做到了,但我想知道我怎样才能改进它?你知道吗

self.id = 36

def OnClickNextPage(self):
    if self.id == 36:
        self.id = 37
    elif self.id == 37:
        self.id = 1020
    elif self.id == 1020:
        self.id = 2020
    elif self.id == 2020:
        self.id = 3019
    elif self.id == 3019:
        self.id = 5015
    elif self.id == 5015:
        self.id = 7019
    else:
        return

def OnClickPrevPage(self):
    if self.id == 36:
        return
    elif self.id == 37:
        self.id = 36
    elif self.id == 1020:
        self.id = 37
    elif self.id == 2020:
        self.id = 1020
    elif self.id == 3019:
        self.id = 2020
    elif self.id == 5015:
        self.id = 3019
    elif self.id == 7019:
        self.id = 5015
    else:
        return

我希望得到准确的值,但我真的不知道如何使它更聪明。你知道吗


Tags: selfidreturnifdefelseelifonclicknextpage
3条回答

如果您只是想缩短它,那么可以使用self.id值的列表以及要将其更改为的值。对于第一个函数:

def OnClickNextPage(self):
    possible_ids = [36, 37, 1020, 2020, 3019, 5015]
    change_id = [37, 1020, 2020, 3019, 5015, 7019]
    if self.id in possible_ids:
        self.id = change_id[possible_ids.index(self.id)]
        return self
    else:
        return self

确保返回self,以便它更新对象的self.id。你知道吗

你可以把id列成一个列表,并跟踪你所在的页面(索引)。使id成为一个属性,以便根据需要根据当前索引轻松计算:

class Pages:
    def __init__(self, ids):
        self.ids = ids
        self.index = 0

    @property
    def id(self):
        return self.ids[self.index]

    def OnClickNextPage(self):
        self.index += 1

    def OnClickPrevPage(self):
        self.index -= 1

pages = Pages([36, 37, 1020, 2020, 3019, 5015])
print(pages.id)
pages.OnClickNextPage()
print(pages.id)
pages.OnClickNextPage()
print(pages.id)
pages.OnClickPrevPage()
print(pages.id)

这将输出:

36
37
1020
37

您可以创建一个有序的页面列表,然后单步执行列表中的n+1或n-1元素。这里唯一的复杂性是知道你现在在哪里。如果可能,您可以简单地存储n以及id。如果不可能,您可以使用index方法查找n。你知道吗

list_of_pages.index(id)

这不是很快,但它的代码维护较少。你知道吗

相关问题 更多 >