0

我有这个代码

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)

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

有什么问题?

谢谢

4

1 回答 1

3

else行用空格缩进,而该if行用制表符缩进。从 Python 的角度来看,这两个缩进可能不匹配,因此else与 that 不匹配if。可能它与for(也可以有一个else) 在同一个缩进上。

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

于 2013-04-02T17:45:17.783 回答