Scaling/Rezise in Blender 2.8 Python/Script not working on mesh
Another take on getting the result.

Rather than trying to debug what is happening with your question script here is another take to achieve what I believe is the desired result.

Test script, object mode, adds a cylinder, removes bottom face, scales top face.

Bottom and top faces have z component to their normals. This is how they are selected below.

Once selected, the bottom face is removed from the faces collection.

Scaling top face similar to  related question  Using python and bmesh to scale/resize a face in place , in this case,  using bmesh.ops.scale

Notice apart from adding the cylinder to test, there is no bpy.ops used.  

import bpy
import bmesh
from mathutils import Matrix

scale_factor = 0.85

# add a cylinder to test

bpy.ops.mesh.primitive_cylinder_add()
ob = bpy.context.object
me = ob.data
bm = bmesh.new()
bm.from_mesh(me)

top_face = [f for f in bm.faces if f.normal.z &gt; 0.5].pop()

bottom_face = [f for f in bm.faces if f.normal.z &lt; 0.5].pop()

# remove bottom face

bm.faces.remove(bottom_face)

# scale top face 

bmesh.ops.scale(bm,
        vec = (scale_factor,) * 3,
        space = Matrix.Translation(-top_face.calc_center_median()),
        verts = top_face.verts)

bm.to_mesh(me)
me.update()


Note bmesh.ops.create_cone(diameter1=1, diameter2=0.85) could be used to create the shape, removing the need to scale.

Suggestion, don't over comment code, and consider using if f.select: instead of if f.select == True: