首页 > 解决方案 > 在 pythonanywhere 中的某个类下添加 if-else 语句时出现语法错误

问题描述

由于建议不要将字符串作为主键,因此我已将其更改为整数,并且我想将数字 1 设置为圆形,数字 2 等于正方形,数字 3 等于三角形(以及其他任何内容会说未定义的形状)我尝试在我的形状类下添加这个 if else 语句,它在该 if 语句的第一行返回了一个语法错误。

class Shape(db.Model):
    if shape_name == 1
      print("Circle")
      if shape_name == 2
        print("Square")
        if shape_name == 3
            print("Triangle")
              else:
                print("Other Undefined Shape")
__tablename__ = "shape"

shape_name= db.Column((db.Integer), primary_key=True)
shape_size= db.Column(db.Float, nullable=False)
shape_colorname= db.Column(db.String(4096))
shape_color= db.Column(db.Float, nullable=False)

标签: pythonanywhere

解决方案


忘记pythonanywhere。只需将此代码放在本地 Python 解释器中就会产生很多错误。

您的代码中有很多不正确的地方:

  • 在 Python 中,创建代码块(ifelsewhile等)的语句以冒号结尾;
  • shape_name没有定义你在哪里使用它;
  • 继续增加 ; 的缩进是没有意义的(考虑到你想要做什么)if
  • 不要将松散的代码放在类定义中,只在其他定义中(基本上是变量和函数);它应该在方法或构造函数中;

如果我正确理解您想要做什么,这里是您的代码的更正版本:

__tablename__ = "shape"

shape_name      = db.Column((db.Integer), primary_key=True)
shape_size      = db.Column(db.Float, nullable=False)
shape_colorname = db.Column(db.String(4096))
shape_color     = db.Column(db.Float, nullable=False)


class Shape(db.Model):
    def __init__(self):
        if shape_name == 1:
            print("Circle")
        elif shape_name == 2:
            print("Square")
        elif shape_name == 3:
            print("Triangle")
        else:
            print("Other Undefined Shape")

确保您了解上面代码中发生的事情。

不过,作为个人建议,我建议您建立一本字典:

class Shape():
    mapping = {
        1: "Circle",
        2: "Square",
        3: "Triangle"
    }

    def __init__(self, shape_name):
        print(self.mapping.get(shape_name, "Other Undefined Shape"))

推荐阅读