[proofplan]
The Euler class $e(E) = s_0^*(q(u_E))$ is defined by pulling back the image of the Thom class under the map $q: H^d(E, E^\#; R) \to H^d(E; R)$ along the zero section $s_0$. If $E$ admits a nowhere-zero section $s$, then $s$ is homotopic to $s_0$ (since fibers are convex), so $e(E) = s^*(q(u_E))$. But $s$ maps into $E^\#$, so $s^*$ factors through the restriction $H^d(E; R) \to H^d(E^\#; R)$, and exactness of the pair sequence forces $s^*(q(u_E)) = 0$.
[/proofplan]
[step:Recall the definition of the Euler class and the role of the zero section]
The Euler class is defined as
\begin{align*}
e(E) := s_0^*(q(u_E)) \in H^d(X; R),
\end{align*}
where $u_E \in H^d(E, E^\#; R)$ is the Thom class, $q: H^d(E, E^\#; R) \to H^d(E; R)$ is the natural map from the long exact sequence of the pair $(E, E^\#)$, and $s_0: X \to E$ is the zero section $x \mapsto 0_x$.
[/step]
[step:Replace the zero section by the nowhere-zero section via homotopy]
Let $s: X \to E$ be a section with $s(x) \neq 0_x$ for all $x \in X$, i.e., $s(X) \subseteq E^\#$. Define a homotopy
\begin{align*}
H: X \times [0, 1] &\to E, \quad H(x, t) := (1 - t) \, s_0(x) + t \, s(x).
\end{align*}
For each $x \in X$ and $t \in [0, 1]$, the point $H(x, t)$ lies in the fiber $E_x$ since $E_x$ is a vector space (hence convex). Moreover, $H$ is continuous, $H(\cdot, 0) = s_0$, and $H(\cdot, 1) = s$. Since homotopic maps induce equal maps on cohomology:
\begin{align*}
s_0^* = s^*: H^d(E; R) \to H^d(X; R).
\end{align*}
Therefore $e(E) = s_0^*(q(u_E)) = s^*(q(u_E))$.
[guided]
The key geometric fact is that the space of sections of a vector bundle is convex: if $s_0$ and $s$ are both sections, then $(1-t)s_0 + t \cdot s$ is a section for every $t \in [0,1]$. This convexity gives us a homotopy between any two sections. In particular, the zero section $s_0$ and the nowhere-zero section $s$ are homotopic as maps $X \to E$, so they induce the same map on cohomology.
Note that while $s_0$ and $s$ are homotopic as maps into $E$, the homotopy passes through $E$, not through $E^\#$. The intermediate sections $(1-t)s_0 + ts$ are zero at $t = 0$, so the homotopy does not stay inside $E^\#$. This is fine — we only need the induced maps $s_0^*$ and $s^*$ on $H^*(E; R)$ to agree, and homotopy invariance guarantees this.
[/guided]
[/step]
[step:Use exactness of the pair sequence to conclude $e(E) = 0$]
Consider the long exact sequence of the pair $(E, E^\#)$:
\begin{align*}
\cdots \to H^d(E, E^\#; R) \xrightarrow{q} H^d(E; R) \xrightarrow{j^*} H^d(E^\#; R) \to \cdots
\end{align*}
where $j: E^\# \hookrightarrow E$ is the inclusion. Exactness at $H^d(E; R)$ gives $j^* \circ q = 0$, so
\begin{align*}
j^*(q(u_E)) = 0 \in H^d(E^\#; R).
\end{align*}
Since $s(X) \subseteq E^\#$, the section $s: X \to E$ factors through the inclusion $j$. That is, there exists $\tilde{s}: X \to E^\#$ with $j \circ \tilde{s} = s$, and so
\begin{align*}
s^* = \tilde{s}^* \circ j^*: H^d(E; R) \to H^d(X; R).
\end{align*}
Applying this to $q(u_E)$:
\begin{align*}
e(E) = s^*(q(u_E)) = \tilde{s}^*(j^*(q(u_E))) = \tilde{s}^*(0) = 0.
\end{align*}
[guided]
The argument has two independent ingredients:
1. **Homotopy invariance**: $s_0^* = s^*$ on $H^*(E; R)$, allowing us to compute $e(E)$ using the nowhere-zero section $s$ instead of the zero section.
2. **Exactness**: the composition $j^* \circ q = 0$ in the long exact sequence forces $q(u_E)$ to vanish when restricted to $E^\#$. Since $s$ maps into $E^\#$, pulling back $q(u_E)$ along $s$ factors through this zero map.
Geometrically: the Euler class measures the "twisting" of the bundle that prevents a nowhere-zero section from existing. If such a section does exist, there is no twisting — the Euler class must vanish. This is the cohomological obstruction: $e(E) \neq 0$ implies every section must vanish somewhere.
[/guided]
[/step]