Else语句只在Python循环中执行1次

时间:2013-04-02 17:36:26

标签: python

我有这段代码

def filtraValoraciones (nomFichero = "valoraciones.data"):
# Se crea el archivo de salida
crearArchivoValoracionesFiltradas()
contadorLineasTotal = 0
contadorLineasValidas = 0
lineas = [(l.strip()).split("\t") for l in (open(nomFichero).readlines())]
for l in lineas:
    contadorLineasTotal = contadorLineasTotal + 1
    # Se lee Usuario, Restaurante, Precio y Calidad
    idUsuari = int(l[0])
    idRestaurant = int(l[1])
    precio = round(float(l[2]),2)
    calidad = round(float(l[3]),2)
    if (idUsuari >= 0 and idUsuari <= 99) and (idRestaurant >= 0 and idRestaurant <= 49) and precio > 0.00 and (calidad >= 0.0 and calidad <= 10.00):
        # Tiene valores coherentes --> se vuelcan a otro fichero
        cadena = str(idUsuari) + "    " + str(idRestaurant) + "    " + str(precio) + "    " + str(calidad) + "\n"
        salida = open('valoracionesFiltradas.data','a')
        salida.write (cadena);
        salida.close()
        contadorLineasValidas = contadorLineasValidas + 1
    else:
        cadena2 = str(idUsuari) + "    " + str(idRestaurant) + "    " + str(precio) + "    " + str(calidad) + "\n"
        print cadena2

print "El numero de valoraciones filtradas han sido: " + str(contadorLineasTotal-contadorLineasValidas)

当我执行此操作时,如果statemente对lineas.len正常工作,但是else语句似乎执行了1次而不是(contadorLineasTotal-contadorLineasValidas)次。

有什么问题?

由于

1 个答案:

答案 0 :(得分:3)

else行缩进空格,而if行缩进标签。可能这两个缩进与Pythons的观点不匹配,因此elseif不匹配。可能与forwhich can also have an else block)的缩进相同。

使用一致的缩进来避免此类问题。您还可以使用-t标志运行python,以便在使用包含制表符和空格的缩进时收到警告。