gpt4 book ai didi

python - 在 Python 中使用类根据用户输入打印出实例属性

转载 作者:行者123 更新时间:2023-12-01 00:01:38 24 4
gpt4 key购买 nike

我是编程新手,想通过使用 Python 创建一个小型应用程序来练习。该应用程序要求用户输入级别和术语,应用程序将返回该级别和术语的类(class)表。

我之前曾尝试过不使用类而仅使用嵌套字典,但它很快就变得非常困惑,因为有些类有不同的类(class)。

如何检查用户输入是否在实例内部,然后返回它包含的实例属性?

谢谢!

class PacketClasses:

def __init__(self, level, term, song, story, act1, act2):
self.level = level
self.term = term
self.song = song
self.story = story
self.act1 = act1
self.ac2 = act2


class HeadWayClasses:

def __init__(self, level, term, song, review, expression, gs):
self.level = level
self.term = term
self.song = song
self.review = review
self.expression = expression
self.gs = gs


p1 = Packet("Pink", 1, "heads shoulders knees and toes", "The giant grass-hopper", "bowling", "craft")
p2 = Packet("Pink", 2, "ABC song", "The giant grass-hopper part 2", "shopping", "craft")
g1 = Packet("Green", 1, "ABC song", "Snow White", "Animals", "craft")
g2 = Packet("Green", 2, "ABC song", "Snow White part 2", "At the zoo", "craft")

o1 = HeadWay("Orange", 1, "song 1", "review 1", "expression 1", "gs 1")
o2 = HeadWay("Orange", 2, "song 2", "review 2", "expression 2", "gs 2")
a1 = HeadWay("Aqua", 2, "song 1", "review 1", "expression 1", "gs 1")
a2 = HeadWay("Aqua", 2, "song 2", "review 2", "expression 2", "gs 2")

users_level = input("Please enter the level you wish to check: ")
users_term = int(input("Please enter the term level you wish to check: "))

# if users_level & users_term in a class, print the curriculum

最佳答案

这是继承和面向对象编程如何真正帮助您的经典示例。我们将创建一个父类 Classes 并扩展它。这样会减少很多代码。

class Classes:

def __init__(self, level, term, song):
self.level = level
self.term = term
self.song = song

现在,我们将使用您已有的类来扩展它:

class Packet(Classes):

def __init__(self, level, term, song, story, act1, act2):
super().__init__(level, term, song)
self.story = story
self.act1 = act1
self.ac2 = act2


class HeadWay(Classes):

def __init__(self, level, term, song, review, expression, gs):
super().__init__(level, term, song)
self.review = review
self.expression = expression
self.gs = gs

没有太大变化,但现在您可以确定,只要您互换使用 PacketClasses 或 HeadWayClasses,它们始终都会有一个级别、术语和歌曲。

现在只需在类(class)中搜索级别和术语即可。对于大量数据,您实际上需要使用真正的数据库。然而,对于像这样的小数据,简单的循环就足够了。

将类放入数组中:

classes = [
Packet("Pink", 1, "heads shoulders knees and toes", "The giant grass-hopper", "bowling", "craft"),
Packet("Pink", 2, "ABC song", "The giant grass-hopper part 2", "shopping", "craft"),
Packet("Green", 1, "ABC song", "Snow White", "Animals", "craft"),
Packet("Green", 2, "ABC song", "Snow White part 2", "At the zoo", "craft"),
HeadWay("Orange", 1, "song 1", "review 1", "expression 1", "gs 1"),
HeadWay("Orange", 2, "song 2", "review 2", "expression 2", "gs 2"),
HeadWay("Aqua", 2, "song 1", "review 1", "expression 1", "gs 1"),
HeadWay("Aqua", 2, "song 2", "review 2", "expression 2", "gs 2")
]

现在我们可以循环它们了。让我们将逻辑放入一个小函数中:

def findByLevelAndTerm(classes, level, term):
for c in classes:
if c.level == level and c.term == term:
return c
return None

我们就完成了!现在您可以按级别和术语搜索类(class):

users_level = input("Please enter the level you wish to check: ")
users_term = int(input("Please enter the term you wish to check: "))
found_class = findByLevelAndTerm( classes, users_level, users_term )
if found_class is None: print("Unable to find the class!")

需要注意的是,findByLevelAndTerm() 将仅返回第一个结果。如果存在多个,您可能希望它返回一个列表。

关于python - 在 Python 中使用类根据用户输入打印出实例属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60306821/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com