擅长:python、mysql、java
<p>如果<code>i</code>是零或一,那么<code>i-2</code>将分别映射到<code>-2</code>和<code>-1</code>。在Python中<code>-1</code>表示最后一个元素。所以它将大写<code>E</code>,正如您所注意到的。你知道吗</p>
<p>从索引<code>2</code>开始可能更有意义:</p>
<pre><code>strin = "hello! there!"
strout = <b>list(strin[:2])</b>
for i in range(<b>2</b>, len(strin)):
if strin[i-2] == '!':
strout.append(strin[i].capitalize())
else:
strout.append(strin[i])
strout[0] = strout[0].capitalize()
result = ''.join(strout)</code></pre>
<p>也就是说,在这里使用正则表达式可能更具声明性:</p>
<pre><code>from re import compile as recompile
rgx = recompile(r'(?:[!]\s*|^)[a-z]')
outp = rgx.sub(lambda m: m.group(0).upper(), strin)</code></pre>
<p>这将大写第一个字符,以及感叹号后面的所有字符,而不管中间有多少空格。你知道吗</p>