python 为什么一直报错啊

为什么这一直报错啊 python

class Person:
    def __init__(self, name, height, weight):
        self.name = name
        self.height = height
        self.weight = weight

    def say_name(self):
        print("我的名字叫" + self.name)

    def say_weight(self):
        print("我" + self.weight)


person1 = Person("老张", 170, 100)
person2 = Person("James", 160, 80)

person1.say_name()
person2.say_weight()

在给出的代码中,Person类的定义和实例化看起来是正确的,但是在调用person2.say_weight()方法时会报错。错误出现在say_weight方法的print语句中,您缺少了字符串连接的操作符。

要修复这个问题,您需要在say_weight方法中添加一个字符串连接操作符,将字符串连接起来。下面是修改后的代码:

class Person:
    def __init__(self, name, height, weight):
        self.name = name
        self.height = height
        self.weight = weight
 
    def say_name(self):
        print("我的名字叫" + self.name)
 
    def say_weight(self):
        print("我体重" + str(self.weight) + "公斤")
        # 或者使用 f-string 格式化字符串
        # print(f"我体重{self.weight}公斤")
 
 
person1 = Person("老张", 170, 100)
person2 = Person("James", 160, 80)
 
person1.say_name()
person2.say_weight()

现在,say_weight方法中的字符串连接问题得到了修复,代码应该能够正常运行,输出正确的结果。记得在say_weight方法中,我们需要将self.weight转换为字符串,因为print函数只能打印字符串。

大概需要做个类型转换

class Person:
    def __init__(self, name, height, weight):
        self.name = name
        self.height = height
        self.weight = weight
 
    def say_name(self):
        print("我的名字叫" + str(self.name))
 
    def say_weight(self):
        print("我" + str(self.weight))
 
 
person1 = Person("老张", 170, 100)
person2 = Person("James", 160, 80)
 
person1.say_name()
person2.say_weight()
 

print("我" + str(self.weight))

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7705094
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:Python实验报告一 python基础试题练习
  • 同时,你还可以查看手册:python- 在其它应用程序嵌入 Python- 对嵌入 Python 功能进行扩展 中的内容
  • 您还可以看一下 陈槐老师的python 编程基础课程课程中的 了解什么是python小节, 巩固相关知识点
  • 除此之外, 这篇博客: Python基础语法中的 一、为什么使用Python        部分也许能够解决你的问题。
  • 以下回答由chatgpt基于相关博客总结生成:

    问题解答如下:

    在你的代码中可能存在以下问题:

    1. say_weight函数中,你试图将一个整数值self.weight与一个字符串连接起来。这会导致类型错误。正确的做法是将self.weight转换为字符串,然后再与其他字符串连接起来。

    修复建议:

    def say_weight(self):
        print("我" + str(self.weight) + "斤")
    
    1. 在调用person2.say_weight()时,你可能意图调用的是person2.say_name()函数。这是一个拼写错误。

    修复建议:

    person2.say_name()
    

    综上所述,修改后的代码如下:

    class Person:
        def __init__(self, name, height, weight):
            self.name = name
            self.height = height
            self.weight = weight
    
        def say_name(self):
            print("我的名字叫" + self.name)
    
        def say_weight(self):
            print("我" + str(self.weight) + "斤")
    
    
    person1 = Person("老张", 170, 100)
    person2 = Person("James", 160, 80)
    
    person1.say_name()
    person2.say_name()
    person1.say_weight()
    person2.say_weight()
    

    请尝试运行修改后的代码,看看是否能够正常执行了。如果还有其他问题,欢迎继续提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^