02 Übung: PEP 8 Verstöße Erkennen
Anleitung
Dieses interaktive Quiz testet Ihre Fähigkeit, PEP 8-Verstöße in Python-Code zu erkennen. Die Fragen basieren auf den Level 2 PEP 8-Übungen und decken folgende Themen ab:
- Namenskonventionen (snake_case, PascalCase, UPPER_CASE)
- Leerzeichenregeln (Leerzeichen um Operatoren, nach Kommas, nach Doppelpunkten)
- Import-Organisation (ein Import pro Zeile, ungenutzte Imports entfernen)
- Zusammengesetzte Anweisungen (mehrere Anweisungen in einer Zeile vermeiden)
- Zeilenlänge (79-88 Zeichen Limit)
- Ressourcenverwaltung (Verwendung von
withfür Dateibehandlung)
Lesen Sie jeden Code-Ausschnitt sorgfältig und versuchen Sie, alle Verstöße zu identifizieren, bevor Sie Ihre Antwort auswählen. Viel Erfolg!
Wie viele PEP 8-Verstöße enthält dieser Code?
import sys,os
import numpy as np
def ProcessData(input_list,threshold=10):
result=[]
for item in input_list:
if item>threshold:result.append(item*2)
return result
Wählen Sie ALLE PEP 8-Verstöße in diesem Code aus:
import sys,os
import numpy as np
def ProcessData(input_list,threshold=10):
result=[]
for item in input_list:
if item>threshold:result.append(item*2)
return result
Welche Namenskonvention sollte die Funktion ProcessData laut PEP 8 verwenden?
Wie viele PEP 8-Verstöße enthält dieser Code?
from dash import Dash,html,dcc
import numpy as np
import sys
def generate_road_profile(num_points=100,x_max=80):
x=np.linspace(0,x_max,num_points)
y=0.015*x**3+0.3*np.sin(2*np.pi*x)
return x,y
camera_position={'x':0,'y':2.0,'z':1.5}
MAX_distance=100
Wählen Sie ALLE PEP 8-Verstöße in diesem Code-Ausschnitt aus:
camera_position={'x':0,'y':2.0,'z':1.5}
MAX_distance=100
Was ist laut PEP 8 falsch am Variablennamen MAX_distance?
Wählen Sie ALLE PEP 8-Verstöße in diesem Code aus:
import numpy as np
from typing import List
def HelperFunction(val):
result=val*2
return result
def another_helper(x,y,z): return x+y+z
def calculate_distance(point1,point2):
dx=point2[0]-point1[0]
dy=point2[1]-point1[1]
return np.sqrt(dx**2+dy**2)
# This is a very long comment that definitely exceeds the recommended 79 character limit for code readability
Warum empfiehlt PEP 8, die zusammengesetzte Anweisung def another_helper(x,y,z): return x+y+z zu vermeiden?
Wählen Sie ALLE PEP 8-Verstöße in diesem Code aus:
import sys,os,json
class DataProcessor:
def __init__(self,data,config=None):
self.data=data
self.config=config if config else {}
def Process(self,threshold=0):
filtered=[x for x in self.data if x>threshold]
return filtered
def GetStats(self):
return {'mean':np.mean(self.data),'std':np.std(self.data)}
max_items=1000
Welche Namenskonvention sollten die Methoden Process und GetStats laut PEP 8 verwenden?
Dieser Code hat ein Bonusproblem, das nicht strikt ein PEP 8-Verstoß ist, aber einen Laufzeitfehler verursachen würde. Was ist es?
import sys,os,json
class DataProcessor:
def __init__(self,data,config=None):
self.data=data
self.config=config if config else {}
def GetStats(self):
return {'mean':np.mean(self.data),'std':np.std(self.data)}
Wählen Sie ALLE PEP 8-Verstöße in diesem Code aus:
from typing import List,Tuple
import numpy as np
def find_intersection(x_road,y_road,angle_degrees,camera_x=0,camera_y=1.5):
angle_rad=np.radians(angle_degrees)
ray_dx=np.cos(angle_rad)
ray_dy=np.sin(angle_rad)
for i in range(len(x_road)-1):
x1,y1=x_road[i],y_road[i]
x2,y2=x_road[i+1],y_road[i+1]
t=((camera_y-y1)*ray_dx-(camera_x-x1)*ray_dy)/((x2-x1)*ray_dy-(y2-y1)*ray_dx)
if 0<=t<=1:
x_intersect=x1+t*(x2-x1)
return x_intersect,y1+t*(y2-y1)
return None,None
Die folgende Zeile aus Übung 2.5 ist zu lang. Was ist der BESTE Weg, sie gemäß PEP 8 Best Practices zu korrigieren?
t=((camera_y-y1)*ray_dx-(camera_x-x1)*ray_dy)/((x2-x1)*ray_dy-(y2-y1)*ray_dx)
Wählen Sie ALLE PEP 8-Verstöße in diesem Code aus:
import json,sys
from pathlib import Path
class ConfigManager:
def __init__(self,config_file="config.json"):
self.config_file=config_file
self.data=self.load_config()
def load_config(self):
if Path(self.config_file).exists():return json.load(open(self.config_file))
return {}
def get_value(self,key,default=None):
return self.data.get(key,default)
def update_config(self,updates):
self.data.update(updates)
with open(self.config_file,"w") as f:json.dump(self.data,f)
DEFAULT_timeout=30
max_retries=3
Was ist der korrekte Weg, diese zusammengesetzte Anweisung aus Übung 2.6 umzuschreiben?
if Path(self.config_file).exists():return json.load(open(self.config_file))
Wie sollten die folgenden Variablen auf Modulebene laut PEP 8 umbenannt werden?
DEFAULT_timeout=30
max_retries=3