我有这段代码
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)次。
有什么问题?
由于
答案 0 :(得分:3)
else
行缩进空格,而if
行缩进标签。可能这两个缩进与Pythons的观点不匹配,因此else
与if
不匹配。可能与for
(which can also have an else
block)的缩进相同。
使用一致的缩进来避免此类问题。您还可以使用-t
标志运行python,以便在使用包含制表符和空格的缩进时收到警告。