Das pyide-Element repräsentiert eine Python-Integrated-Development-Environment (IDE)-Komponente.
Es wird verwendet, um eine Python-Coding-Umgebung in die Hyperbook-Website einzubetten.
Dieses Element ermöglicht es Benutzern, Python-Code direkt im Browser zu schreiben, zu bearbeiten und auszuführen.
:::pyide
```python
a = 5 + 2
print(a)
```
:::
Sie können auch jedes Paket verwenden, das hier aufgeführt ist: https://pyodide.org/en/stable/usage/packages-in-pyodide.html
Wenn Sie Pakete aus PyPI benötigen, verwenden Sie das Attribut packages mit einer kommaseparierten Liste. Hyperbook lädt micropip und installiert diese Pakete vor der Ausführung Ihres Skripts.
:::pyide{packages="snowballstemmer"}
```python
import snowballstemmer
stemmer = snowballstemmer.stemmer("english")
print(stemmer.stemWords(["running", "runner", "runs"]))
```
:::
:::pyide
```python
import numpy as np
a = np.arange(15).reshape(3, 5)
print(a)
```
:::
Testfälle hinzufügen
Sie können Testfälle zu den Code-Snippets hinzufügen, indem Sie ein test-Tag zum Codeblock hinzufügen. Der Kommentar #SCRIPT# wird durch den geschriebenen Code ersetzt. Er kann an jeder Stelle des Codeblocks platziert werden.
:::pyide
```python test
#SCRIPT#
r = check_palindrom("uhu")
if r:
print("Pass")
else:
print("Fail")
```
```python test
#SCRIPT#
r = check_palindrom("test")
if not r:
print("Pass")
else:
print("Fail")
```
```python
def check_palindrom(s):
return True
```
:::
Wenn Ihr Code input() aufruft, zeigt der Browser einen Prompt-Dialog für die Eingabe an.
:::pyide
```python
a = input("Enter a value: ")
print(a)
```
:::
Ausführung stoppen
Nutzen Sie den Stoppen-Button im Editor, um eine Unterbrechung anzufordern. Das Stoppen einer Endlosschleife oder eines lang andauernden Prozesses ist jedoch nur zuverlässig, wenn diese beiden Header auf Ihrem Server gesetzt sind:
'Cross-Origin-Embedder-Policy': 'require-corp'
'Cross-Origin-Opener-Policy': 'same-origin'
Bibliotheken mit SDL
PyGame
Top-Level-PyGame-Schleifen werden fuer die Browser-Ausfuehrung automatisch verpackt, daher koennen Sie die Schleife direkt ohne asyncio.run(...) schreiben.
:::pyide{canvas}
```python
import pygame
pygame.init()
screen = pygame.display.set_mode((400, 300))
clock = pygame.time.Clock()
r = 0
g = 0
b = 0
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_r:
r = (r + 50) % 256
elif event.key == pygame.K_g:
g = (g + 50) % 256
elif event.key == pygame.K_b:
b = (b + 50) % 256
elif event.key == pygame.K_ESCAPE:
running = False
elif event.type == pygame.QUIT:
running = False
screen.fill((r, g, b))
pygame.display.flip()
clock.tick(60)
```
:::
Pytamaro
Verwenden Sie canvas zusammen mit packages="pytamaro", um show_graphic(...) direkt auf dem Canvas statt im Ausgabebereich darzustellen.
:::pyide{canvas packages="pytamaro"}
```python
from pytamaro import *
block_size = 25
num_blocks = 16
line = empty_graphic()
for col in range(num_blocks):
if col % 2 == 0:
color = black
else:
color = white
block = rectangle(block_size, block_size, color)
line = beside(line, block)
second_line = rotate(180, line)
finish_line = above(line, second_line)
show_graphic(finish_line)
```
:::
Turtle
Die Browser-Turtle-API steht ueber from turtle import * zur Verfuegung.
Bewegung
| Methode | Parameter | Beschreibung |
|---|---|---|
forward, fd |
distance |
Bewegt die Turtle um die angegebene Strecke nach vorn. |
backward, bk, back |
distance |
Bewegt die Turtle um die angegebene Strecke nach hinten. |
left, lt |
angle |
Dreht die Turtle um den angegebenen Winkel nach links. |
right, rt |
angle |
Dreht die Turtle um den angegebenen Winkel nach rechts. |
goto, setpos, setposition |
x, y oder (x, y) |
Bewegt die Turtle zu einer absoluten Position. |
setx |
x |
Setzt nur die x-Koordinate. |
sety |
y |
Setzt nur die y-Koordinate. |
setheading, seth |
angle |
Setzt die Ausrichtung der Turtle direkt. |
home |
keine | Bewegt die Turtle zur Mitte zurueck und setzt die Ausrichtung zurueck. |
circle |
radius, steps=120 |
Zeichnet einen angenaeherten Kreis. |
Stift und Zeichnen
| Methode | Parameter | Beschreibung |
|---|---|---|
penup, pu, up |
keine | Hebt den Stift an, sodass Bewegungen keine Linien mehr zeichnen. |
pendown, pd, down |
keine | Senkt den Stift, sodass Bewegungen wieder Linien zeichnen. |
pensize, width |
size |
Setzt die Strichbreite fuer neue Linien. |
colormode |
mode=1.0 |
Setzt oder liefert den aktuellen Farbmodus. Verwenden Sie 255, bevor Sie RGB-Tupel mit Werten von 0 bis 255 uebergeben. |
pencolor |
color |
Setzt die Linienfarbe. |
fillcolor |
color |
Setzt die Fuellfarbe fuer begin_fill / end_fill. |
color |
stroke oder stroke, fill |
Setzt Linien- und Fuellfarbe zusammen. |
dot |
size=5, color=None |
Zeichnet einen gefuellten Punkt an der aktuellen Position. |
begin_fill |
keine | Startet die Aufzeichnung einer gefuellten Form. |
end_fill |
keine | Beendet und fuellt die aktuelle Form. |
write |
text, move=False, align=\"left\", font=None |
Zeichnet Text an der aktuellen Turtle-Position. |
bgcolor |
color |
Setzt die Hintergrundfarbe des Turtle-Canvas. |
bgpic |
filename=\"\" |
Laedt ein Hintergrundbild aus dem Pyodide-Dateisystem oder entfernt es mit einem leeren String. |
Status
| Methode | Parameter | Beschreibung |
|---|---|---|
position, pos |
keine | Gibt die aktuelle Turtle-Position als (x, y) zurueck. |
xcor |
keine | Gibt die aktuelle x-Koordinate zurueck. |
ycor |
keine | Gibt die aktuelle y-Koordinate zurueck. |
heading |
keine | Gibt die aktuelle Ausrichtung in Grad zurueck. |
towards |
x, y |
Gibt den Winkel von der Turtle zum angegebenen Punkt zurueck. |
pen |
options=None |
Gibt den aktuellen Stiftzustand zurueck oder aktualisiert Teile davon ueber ein Dictionary-aehnliches Objekt. |
isvisible |
keine | Gibt zurueck, ob der Turtle-Cursor aktuell sichtbar ist. |
Bildschirm und Reset
| Methode | Parameter | Beschreibung |
|---|---|---|
speed |
value=0 |
Setzt die Animationsgeschwindigkeit der Turtle. Hoehere Werte zeichnen schneller. |
screensize |
canvwidth=None, canvheight=None, bg=None |
Gibt die aktuelle Canvas-Groesse zurueck oder aendert Groesse und optionale Hintergrundfarbe. Wenn das Canvas groesser als der sichtbare Bereich ist, erscheinen Scrollbalken. |
showturtle, st |
keine | Zeigt den Turtle-Cursor an. |
hideturtle, ht |
keine | Blendet den Turtle-Cursor aus. |
clear |
keine | Loescht die Zeichnung, behaelt aber den aktuellen Turtle-Zustand bei. |
reset |
keine | Setzt den Turtle-Zustand zurueck und loescht die Zeichnung. |
:::pyide{canvas}
```python
from turtle import *
speed(50)
colormode(255)
screensize(900, 700, "#0f172a")
bgcolor("#0f172a")
pensize(2)
colors = [
(244, 114, 182),
(56, 189, 248),
(251, 191, 36),
(74, 222, 128),
]
for step in range(48):
pencolor(colors[step % len(colors)])
circle(160 - step * 2)
right(15)
penup()
goto(0, -20)
pencolor("#f8fafc")
write("Hyperbook", align="center", font=("Arial", 24, "bold"))
hideturtle()
```
:::