IndentationError:在If..elif语句中实现公式时

时间:2019-11-08 07:21:09

标签: python python-3.x

专家,我是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

1 个答案:

答案 0 :(得分:1)

您有几个问题:

  1. 缩进在Python中具有含义。特别是,if的每次使用应在后面的行中紧跟一个缩进的块,该块描述了条件成立时的处理方法。任何elseelif都应与if语句使用相同的缩进级别。
  2. 大小写很重要:应该是if,而不是If
  3. Nit:if之后不需要括号。

在上面的代码中情况并非如此-例如,elifif语句不在同一级别。试试这个

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]
相关问题