pythonanywhere - 在 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。只需将此代码放在本地 Python 解释器中就会产生很多错误。
您的代码中有很多不正确的地方:
- 在 Python 中,创建代码块(
if
、else
、while
等)的语句以冒号结尾; 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"))
推荐阅读
- java - Flutter:如何对堆栈跟踪进行去混淆处理?
- javascript - 调用 new Audio() 的更好方法;
- ruby-on-rails - webpack:TypeError:validateOptions 不是函数
- r - 线图形状
- android - 从另一个线程访问 UI 线程的视图
- r - 使用 sjPlot 更改 plot_model 中的变量标签以获得随机效应
- android - 无法解决:com.xwray:groupie:2.9.0
- amazon-ec2 - 通过远程桌面连接的内置(集成)网络摄像头
- spring - 在springboot中解决构建路径错误之前无法构建项目
- c++ - Qcombobox在C++ Qt中删除和添加项目