这个代码有什么问题?只能连接str

2024-10-01 13:34:12 发布

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

class Person:
    def __init__(self, givenname, personality, is_sitting):
        self.name = givenname
        self.personality = personality
        self.is_sitting = is_sitting
    
    def sit_down(self):
        self.is_sitting = True
    def stand_up(self):
        self.is_sitting = False
    def intro_self(self):
        print("My name is " + self.name)
        print("I am " + self.personality)
        print("I am" + self.is_sitting)
        print()
p1 = Person("Moaz", "aggeressive", True)
p2 = Person("kamal", "aggeressive", False)

我用python编写了关于类和对象的代码。我是Python新手。 告诉我有什么问题。问题可能出在最后一行的第四行


Tags: nameselffalsetrueinitisdefam
2条回答

当我运行intro_self时,我得到了can only concatenate str (not "bool") to str。 我想这是你遇到的错误

有多种方法可以解决此问题:

print(f"I am {self.is_sitting}")

print("I am {0}".format(self.is_sitting))

print("I am " + str(self.is_sitting))

我建议您使用“f字符串”这是第一个解决方案,您可以在这里阅读更多:https://realpython.com/python-f-strings/

错误是:

第16行,在自我介绍中 打印(“我是”+自我。你坐着吗) TypeError:只能将str(而不是“bool”)连接到str

这意味着,python不知道如何将字符串(“我是”)和布尔(self.is_)粘在一起。 bool可以是truefalse,但在响应中直接使用它是没有意义的。应该是什么?“我是真的”还是“我是假的”?这毫无意义。 因此,您应该针对不同的案例打印不同的文本:

class Person:
    def __init__(self, givenname, personality, is_sitting):
        self.name = givenname
        self.personality = personality
        self.is_sitting = is_sitting

    def sit_down(self):
        self.is_sitting = True

    def stand_up(self):
        self.is_sitting = False

    def intro_self(self):
        print("My name is" + self.name)
        print("I am " + self.personality)
        if self.is_sitting:
            print("I am sitting")
        else:
            print("I am not sitting")

作为一个一般性的建议:在开始的时候,由于他们所说的那些东西,错误消息可能会有点混乱,但是值得一读。它们给你一个提示,在你的代码中有什么地方失败了,特别是what产生了错误

相关问题 更多 >