|
1419 | 1419 | <li><strong>Raises EOFError when user hits EOF (ctrl-d/z) or input stream gets exhausted.</strong></li>
|
1420 | 1420 | </ul>
|
1421 | 1421 | <div><h2 id="commandlinearguments"><a href="#commandlinearguments" name="commandlinearguments">#</a>Command Line Arguments</h2><pre><code class="python language-python hljs"><span class="hljs-keyword">import</span> sys
|
1422 |
| -script_name = sys.argv[<span class="hljs-number">0</span>] |
1423 |
| -arguments = sys.argv[<span class="hljs-number">1</span>:] |
| 1422 | +scripts_path = sys.argv[<span class="hljs-number">0</span>] |
| 1423 | +arguments = sys.argv[<span class="hljs-number">1</span>:] |
1424 | 1424 | </code></pre></div>
|
1425 | 1425 |
|
1426 | 1426 | <div><h3 id="argumentparser">Argument Parser</h3><pre><code class="python language-python hljs"><span class="hljs-keyword">from</span> argparse <span class="hljs-keyword">import</span> ArgumentParser, FileType
|
|
2213 | 2213 | </code></pre></div>
|
2214 | 2214 |
|
2215 | 2215 | <div><h3 id="timingasnippet">Timing a Snippet</h3><pre><code class="python language-python hljs"><span class="hljs-meta">>>> </span><span class="hljs-keyword">from</span> timeit <span class="hljs-keyword">import</span> timeit
|
2216 |
| -<span class="hljs-meta">>>> </span>timeit(<span class="hljs-string">'"-".join(str(i) for i in range(100))'</span>, |
| 2216 | +<span class="hljs-meta">>>> </span>timeit(<span class="hljs-string">'"".join(str(i) for i in range(100))'</span>, |
2217 | 2217 | <span class="hljs-meta">... </span> number=<span class="hljs-number">10000</span>, globals=globals(), setup=<span class="hljs-string">'pass'</span>)
|
2218 | 2218 | <span class="hljs-number">0.34986</span>
|
2219 | 2219 | </code></pre></div>
|
|
2393 | 2393 | <span class="hljs-keyword">import</span> imageio
|
2394 | 2394 | WIDTH, R = <span class="hljs-number">126</span>, <span class="hljs-number">10</span>
|
2395 | 2395 | frames = []
|
2396 |
| -<span class="hljs-keyword">for</span> velocity <span class="hljs-keyword">in</span> range(<span class="hljs-number">15</span>): |
2397 |
| - y = sum(range(velocity+<span class="hljs-number">1</span>)) |
| 2396 | +<span class="hljs-keyword">for</span> velocity <span class="hljs-keyword">in</span> range(<span class="hljs-number">1</span>, <span class="hljs-number">16</span>): |
| 2397 | + y = sum(range(velocity)) |
2398 | 2398 | frame = Image.new(<span class="hljs-string">'L'</span>, (WIDTH, WIDTH))
|
2399 | 2399 | draw = ImageDraw.Draw(frame)
|
2400 | 2400 | draw.ellipse((WIDTH/<span class="hljs-number">2</span>-R, y, WIDTH/<span class="hljs-number">2</span>+R, y+R*<span class="hljs-number">2</span>), fill=<span class="hljs-string">'white'</span>)
|
|
2494 | 2494 | <span class="hljs-keyword">import</span> simpleaudio, math, struct
|
2495 | 2495 | <span class="hljs-keyword">from</span> itertools <span class="hljs-keyword">import</span> chain, repeat
|
2496 | 2496 | F = <span class="hljs-number">44100</span>
|
2497 |
| -P1 = <span class="hljs-string">'71♪,69,,71♪,66,,62♪,66,,59♪,,,'</span> |
2498 |
| -P2 = <span class="hljs-string">'71♪,73,,74♪,73,,74,,71,,73♪,71,,73,,69,,71♪,69,,71,,67,,71♪,,,'</span> |
| 2497 | +P1 = <span class="hljs-string">'71♩,69♪,,71♩,66♪,,62♩,66♪,,59♩,,,'</span> |
| 2498 | +P2 = <span class="hljs-string">'71♩,73♪,,74♩,73♪,,74♪,,71♪,,73♩,71♪,,73♪,,69♪,,71♩,69♪,,71♪,,67♪,,71♩,,,'</span> |
2499 | 2499 | get_pause = <span class="hljs-keyword">lambda</span> seconds: repeat(<span class="hljs-number">0</span>, int(seconds * F))
|
2500 | 2500 | sin_f = <span class="hljs-keyword">lambda</span> i, hz: math.sin(i * <span class="hljs-number">2</span> * math.pi * hz / F)
|
2501 | 2501 | get_wave = <span class="hljs-keyword">lambda</span> hz, seconds: (sin_f(i, hz) <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> range(int(seconds * F)))
|
2502 | 2502 | get_hz = <span class="hljs-keyword">lambda</span> key: <span class="hljs-number">8.176</span> * <span class="hljs-number">2</span> ** (int(key) / <span class="hljs-number">12</span>)
|
2503 |
| -parse_note = <span class="hljs-keyword">lambda</span> note: (get_hz(note[:<span class="hljs-number">2</span>]), <span class="hljs-number">0.25</span> <span class="hljs-keyword">if</span> <span class="hljs-string">'♪'</span> <span class="hljs-keyword">in</span> note <span class="hljs-keyword">else</span> <span class="hljs-number">0.125</span>) |
| 2503 | +parse_note = <span class="hljs-keyword">lambda</span> note: (get_hz(note[:<span class="hljs-number">2</span>]), <span class="hljs-number">0.125</span> <span class="hljs-keyword">if</span> <span class="hljs-string">'♪'</span> <span class="hljs-keyword">in</span> note <span class="hljs-keyword">else</span> <span class="hljs-number">0.25</span>) |
2504 | 2504 | get_samples = <span class="hljs-keyword">lambda</span> note: get_wave(*parse_note(note)) <span class="hljs-keyword">if</span> note <span class="hljs-keyword">else</span> get_pause(<span class="hljs-number">0.125</span>)
|
2505 | 2505 | samples_f = chain.from_iterable(get_samples(n) <span class="hljs-keyword">for</span> n <span class="hljs-keyword">in</span> <span class="hljs-string">f'<span class="hljs-subst">{P1}</span><span class="hljs-subst">{P1}</span><span class="hljs-subst">{P2}</span>'</span>.split(<span class="hljs-string">','</span>))
|
2506 | 2506 | samples_b = <span class="hljs-string">b''</span>.join(struct.pack(<span class="hljs-string">'<h'</span>, int(f * <span class="hljs-number">30000</span>)) <span class="hljs-keyword">for</span> f <span class="hljs-keyword">in</span> samples_f)
|
|
0 commit comments