我想从用户inpu创建一个类的实例

2024-09-29 16:33:16 发布

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

我有一门课:

class Bowler:

    def __init__(self, name, score):
        self.name = name
        self.score = score

    def nameScore(self):
        return '{} {}'.format(self.name, self.score)

我需要获得用户输入,直到输入一个空行。然后用我得到的数据创建一个类的实例。我在想:

def getData():
    name, score = input("Please enter your credentails (Name score): ").split()
    B1 = Bowler(name, score)
    print(B1.nameScore())

但是我必须循环它直到得到一个空白的用户输入。另外,我还需要在循环中创建b2b3b4等。你知道吗

对不起,我还是一个编程新手,也许我从错误的角度看这个问题。你知道吗


Tags: 数据实例用户nameselfformatreturninit
2条回答

这是我做你想做的事的代码:

class Bowler:
    def __init__(self, name, score):
        self.name = name
        self.score = score

    def nameScore(self):
        return '{} {}'.format(self.name, self.score)

def getData():
    try:
        line = input("Please enter your credentails (Name score): ")
    except SyntaxError as e:
        return None
    name, score = line.split()
    score = int(score)
    B = Bowler(name, score)
    print(B.nameScore())
    return B

if __name__ == '__main__':
    bowlers = list()
    while True:
        B = getData()
        if B == None:
            break
        bowlers.append(B)

    for B in bowlers:
        print(B.nameScore())

另外,我建议你修改你的输入,因为现在不方便

你要找的是Python Lists。有了这些,您将能够在运行循环时跟踪新创建的项。为了创建一个列表,我们简单地定义如下:

our_bowlers = []

现在我们需要修改getData函数以返回None或新的Bowler

def getData():
    # Get the input
    our_input = input("Please enter your credentails (Name score): ").split()

    # Check if it is empty
    if our_input == '':
        return None

    # Otherwise, we split our data and create the Bowler
    name, score = our_input.split()
    return Bowler(name, score)

然后我们可以运行一个循环,检查一个新的Bowler,如果我们没有得到任何东西,我们可以打印我们创建的所有Bowlers

# Get the first line and try create a Bowler
bowler = getData()

# We loop until we don't have a valid Bowler
while bowler is not None:

    # Add the Bowler to our list and then try get the next one
    our_bowlers.append(bowler)
    bowler = getData()

# Print out all the collected Bowlers
for b in our_bowlers:
    print(b.nameScore())

相关问题 更多 >

    热门问题