Me instalé todo lo necesario (PyOpenGL y Numeric) e hice algunas pruebas.
En un principio me sorprendió ver lo mismo que mencionás, estuve un tiempo dándole algunas vueltas hasta que me di cuenta: lo que te falta es reinicializar
q y
k antes de comenzar sus respectivos bucles
Es decir, en el primer paso
p = 0,
q se va desde 0 a 300, y
k se va desde cero a 40.
Segundo paso,
p = 1,
q = 300 así que no entra al bucle
Lo que te falta es poner un
q=0 y un
k=1 antes de los correspondientes while.
Saludos y suerte