专家,我是python的新手。我在if-else语句中实现了一个公式以获取EPI结果。我将分享我尝试过的公式和代码。请建议纠正我的错误。注意:“无类型”中的Cre值。帮我将其转换为float / int
我的表格的值是(年龄,CRE,性别)
Gender[3] CRE[12] Age[35]
M 0.7 48
M 0.7 49
F 0.4 57
F Null 63
conn = pyodbc.connect("DRIVER={SQL Server};Server=192.168.s.s;Database=Project;uid=AB;pwd=AB")
cur1 = conn.cursor()
cur1.execute('select * from total_cohort_Biochemical')
for j in cur1:
print(j[1]) #tested
type(j[12]) #NoneType
type(j[35]) #float
if (j[2]=='F'): #Female
if (j[12] <= 0.7):
EPI = 144*(j[12]/0.7)**-0.329 * 0.993**j[35]
elif (j[12] > 0.7):
EPI = 144*(j[12]/0.7)**-1.209 * 0.993**j[35]
If (j[2]=='M'): #Male
if (j[12] <= 0.9):
EPI = 141*(j[12]/0.9)**-0.411 * 0.993**j[35]
elif (j[12] > 0.9):
EPI = 141*(j[12]/0.9)**-1.209 * 0.993**j[35]
IndentationError:unindent与任何外部缩进级别都不匹配
预期结果为
EPI:
111.59414
110.81298
117.26132
NA
答案 0 :(得分:1)
您有几个问题:
if
的每次使用应在后面的行中紧跟一个缩进的块,该块描述了条件成立时的处理方法。任何else
或elif
都应与if
语句使用相同的缩进级别。if
,而不是If
。if
之后不需要括号。在上面的代码中情况并非如此-例如,elif
与if
语句不在同一级别。试试这个
for j in cur1:
print(j[1]) #tested
type(j[12]) #NoneType
type(j[35]) #float
if j[2]=='F': #Female <- Note no parentheses.
if (j[12] <= 0.7):
EPI = 144*(j[12]/0.7)**-0.329 * 0.993**j[35]
elif (j[12] > 0.7):
EPI = 144*(j[12]/0.7)**-1.209 * 0.993**j[35]
if (j[2]=='M'): #Male
if (j[12] <= 0.9):
EPI = 141*(j[12]/0.9)**-0.411 * 0.993**j[35]
elif (j[12] > 0.9):
EPI = 141*(j[12]/0.9)**-1.209 * 0.993**j[35]