02 Übung: PEP 8 Vorher/Nachher-Analyse
Anleitung
Dieses Quiz testet Ihre Fähigkeit, PEP 8-Verbesserungen in echtem Python-Code zu analysieren. Sie vergleichen “Vorher” (nicht-konform) und “Nachher” (konform) Versionen von Code-Ausschnitten und identifizieren die spezifischen Unterschiede, angewendeten Regeln und die Begründung hinter jeder Änderung.
Behandelte Themen:
- Abstände um Operatoren und nach Kommata
- Import-Organisation (Gruppierung, Sortierung, ungenutzte Imports)
- Namenskonventionen (PascalCase, snake_case, UPPER_CASE)
- Zusammengesetzte Anweisungen vs. separate Zeilen
- Mehrzeilige Formatierung für Funktionsaufrufe
- Git-Diff-Auswirkungen der Code-Formatierung
Tipp: Lesen Sie beide Code-Versionen sorgfältig, bevor Sie antworten. Kleine Unterschiede wie ein einzelnes Leerzeichen oder ein Zeilenumbruch zählen als eigenständige Verbesserungen.
Wie viele PEP 8-Verbesserungen wurden zwischen der Vorher- und Nachher-Version vorgenommen?
Vorher:
def calc(a,b):return a+b
Nachher:
def calc(a, b):
return a + b
Geben Sie eine Zahl ein:
Welche PEP 8-Regeln wurden in der Nachher-Version angewendet?
Vorher:
def calc(a,b):return a+b
Nachher:
def calc(a, b):
return a + b
Wählen Sie ALLE zutreffenden aus:
Welche PEP 8-Regeln wurden in der Nachher-Version dieser Imports angewendet?
Vorher:
import sys,os,json
from typing import List,Dict
import numpy as np
Nachher:
import json
import os
import sys
from typing import Dict, List
import numpy as np
Wählen Sie ALLE zutreffenden aus:
Warum ist die Leerzeile zwischen Import-Gruppen wichtig?
import json
import os
import sys
from typing import Dict, List
# <-- diese Leerzeile
import numpy as np
Wie viele PEP 8-Verbesserungen wurden zwischen der Vorher- und Nachher-Version vorgenommen?
Vorher:
class dataProcessor:
def __init__(self,items):
self.items=items
self.count=len(items)
def Process(self): return [x*2 for x in self.items]
Nachher:
class DataProcessor:
def __init__(self, items):
self.items = items
self.count = len(items)
def process(self):
return [x * 2 for x in self.items]
Geben Sie eine Zahl ein:
Welche PEP 8-Namenskonventionsregeln wurden in der Nachher-Version angewendet?
Vorher:
class dataProcessor:
...
def Process(self): return [x*2 for x in self.items]
Nachher:
class DataProcessor:
...
def process(self):
return [x * 2 for x in self.items]
Wählen Sie ALLE zutreffenden aus:
Welche PEP 8-Regeln wurden in der Nachher-Version angewendet?
Vorher:
camera={'x':0,'y':2.0,'z':1.5}
max_distance=100
default_threshold=0.5
Nachher:
camera = {'x': 0, 'y': 2.0, 'z': 1.5}
MAX_DISTANCE = 100
DEFAULT_THRESHOLD = 0.5
Wählen Sie ALLE zutreffenden aus:
Warum wurden max_distance und default_threshold in MAX_DISTANCE und DEFAULT_THRESHOLD umbenannt?
Wie viele PEP 8-Verbesserungen wurden zwischen der Vorher- und Nachher-Version vorgenommen?
Vorher:
def process(data,threshold=10,debug=False):
result=[]
for item in data:
if item>threshold:result.append(item*2)
if debug:print(f"Processed {len(result)} items")
return result
Nachher:
def process(data, threshold=10, debug=False):
result = []
for item in data:
if item > threshold:
result.append(item * 2)
if debug:
print(f"Processed {len(result)} items")
return result
Geben Sie eine Zahl ein:
Warum ist das Aufteilen zusammengesetzter Anweisungen in separate Zeilen wichtig für das Debugging?
Vorher (zusammengesetzt):
if item>threshold:result.append(item*2)
Nachher (separate Zeilen):
if item > threshold:
result.append(item * 2)
Wie viele PEP 8-Verbesserungen wurden zwischen der Vorher- und Nachher-Version vorgenommen?
Vorher:
from dash import Dash,html,dcc
import plotly.graph_objects as go
import numpy as np
import sys
def create_visualization(x_data,y_data,title="Plot"):
fig=go.Figure()
fig.add_trace(go.Scatter(x=x_data,y=y_data,mode='lines',name='Data'))
fig.update_layout(title=title,xaxis_title="X",yaxis_title="Y")
return fig
APP_title="Road Profile Viewer"
Nachher:
from dash import Dash, dcc, html
import numpy as np
import plotly.graph_objects as go
def create_visualization(x_data, y_data, title="Plot"):
fig = go.Figure()
fig.add_trace(go.Scatter(
x=x_data,
y=y_data,
mode='lines',
name='Data'
))
fig.update_layout(
title=title,
xaxis_title="X",
yaxis_title="Y"
)
return fig
APP_TITLE = "Road Profile Viewer"
Geben Sie eine Zahl ein:
Welche Kategorien von PEP 8-Regeln wurden im Praxisbeispiel angewendet?
Vorher:
from dash import Dash,html,dcc
import plotly.graph_objects as go
import numpy as np
import sys
def create_visualization(x_data,y_data,title="Plot"):
fig=go.Figure()
fig.add_trace(go.Scatter(x=x_data,y=y_data,mode='lines',name='Data'))
fig.update_layout(title=title,xaxis_title="X",yaxis_title="Y")
return fig
APP_title="Road Profile Viewer"
Wählen Sie ALLE zutreffenden Kategorien aus:
Warum wird mehrzeilige Formatierung für Funktionsaufrufe mit vielen Argumenten bevorzugt?
Vorher (einzeilig):
fig.add_trace(go.Scatter(x=x_data,y=y_data,mode='lines',name='Data'))
Nachher (mehrzeilig):
fig.add_trace(go.Scatter(
x=x_data,
y=y_data,
mode='lines',
name='Data'
))
Ein Teamkollege ändert mode='lines' zu mode='markers' in einem Funktionsaufruf. Welcher Formatierungsstil erzeugt einen saubereren Git-Diff?
Stil A (einzeilig):
fig.add_trace(go.Scatter(x=x_data, y=y_data, mode='lines', name='Data'))
Stil B (mehrzeilig):
fig.add_trace(go.Scatter(
x=x_data,
y=y_data,
mode='lines',
name='Data'
))