Add solutions for uebungen for files
Signed-off-by: Christopher Arndt <chris@chrisarndt.de>
This commit is contained in:
parent
205c83790c
commit
dd36861233
|
@ -0,0 +1,137 @@
|
||||||
|
# Aufgabe 1
|
||||||
|
|
||||||
|
fp = open("../uebungen/employee_skills.txt", encoding="utf-8")
|
||||||
|
contents = fp.read()
|
||||||
|
fp.close()
|
||||||
|
|
||||||
|
print("Länge:", len(contents))
|
||||||
|
|
||||||
|
print("-" * 50)
|
||||||
|
|
||||||
|
# Alternativ:
|
||||||
|
|
||||||
|
with open("../uebungen/employee_skills.txt") as fp:
|
||||||
|
contents = fp.read()
|
||||||
|
|
||||||
|
print(contents)
|
||||||
|
|
||||||
|
print("-" * 50)
|
||||||
|
|
||||||
|
|
||||||
|
# Aufgabe 2
|
||||||
|
|
||||||
|
with open("../uebungen/employee_skills.txt") as fp:
|
||||||
|
i = 0
|
||||||
|
for line in fp:
|
||||||
|
line = line.strip()
|
||||||
|
|
||||||
|
if not line:
|
||||||
|
continue
|
||||||
|
|
||||||
|
i += 1
|
||||||
|
|
||||||
|
print("Nicht leere Zeilen:", i)
|
||||||
|
|
||||||
|
print("-" * 50)
|
||||||
|
|
||||||
|
|
||||||
|
# Aufgabe 3
|
||||||
|
|
||||||
|
employees = []
|
||||||
|
with open("../uebungen/employee_skills.txt") as fp:
|
||||||
|
for line in fp:
|
||||||
|
if not line.strip():
|
||||||
|
continue
|
||||||
|
|
||||||
|
name = line.split(":")[0].strip()
|
||||||
|
employees.append(name)
|
||||||
|
|
||||||
|
employees.sort()
|
||||||
|
|
||||||
|
for name in employees:
|
||||||
|
print(name)
|
||||||
|
|
||||||
|
print("-" * 50)
|
||||||
|
|
||||||
|
|
||||||
|
# Aufgabe 4
|
||||||
|
|
||||||
|
employee_salaries = {}
|
||||||
|
with open("../uebungen/salaries.txt") as fp:
|
||||||
|
for line in fp:
|
||||||
|
if not line.strip():
|
||||||
|
continue
|
||||||
|
|
||||||
|
name, salary = line.strip().split(":", 1)
|
||||||
|
name = name.strip()
|
||||||
|
salary = int(salary.strip())
|
||||||
|
employee_salaries[name] = salary
|
||||||
|
|
||||||
|
print("Min. Gehalt:", min(employee_salaries.values()))
|
||||||
|
print("Max. Gehalt:", max(employee_salaries.values()))
|
||||||
|
|
||||||
|
print("-" * 50)
|
||||||
|
|
||||||
|
|
||||||
|
# Aufgabe 5
|
||||||
|
|
||||||
|
employee_skills = {}
|
||||||
|
with open("../uebungen/employee_skills.txt") as fp:
|
||||||
|
for line in fp:
|
||||||
|
if not line.strip():
|
||||||
|
continue
|
||||||
|
|
||||||
|
name, skills = line.strip().split(":", 1)
|
||||||
|
name = name.strip()
|
||||||
|
skills = [item.strip() for item in skills.split(",")]
|
||||||
|
employee_skills[name] = skills
|
||||||
|
|
||||||
|
|
||||||
|
# Aufgabe 6
|
||||||
|
|
||||||
|
employees = {}
|
||||||
|
|
||||||
|
for key in employee_salaries:
|
||||||
|
salary = employee_salaries.get(key, 0)
|
||||||
|
skills = employee_skills.get(key)
|
||||||
|
employees[key] = {"skills": skills, "salary": salary}
|
||||||
|
|
||||||
|
print("-" * 50)
|
||||||
|
|
||||||
|
|
||||||
|
# Aufgabe 6
|
||||||
|
|
||||||
|
employee_salaries = {}
|
||||||
|
try:
|
||||||
|
with open("../uebungen/salaries-errors.txt") as fp:
|
||||||
|
for i, line in enumerate(fp):
|
||||||
|
# remove whitspace at satrt / end of line
|
||||||
|
line = line.strip()
|
||||||
|
|
||||||
|
# ignore empty / whitespace-only lines
|
||||||
|
# and comment lines
|
||||||
|
if not line or line.startswith("#"):
|
||||||
|
continue
|
||||||
|
|
||||||
|
try:
|
||||||
|
name, salary = line.strip().split(":", 1)
|
||||||
|
except ValueError as exc:
|
||||||
|
print(f"Warning: could not parse line {i+1}: {exc}")
|
||||||
|
else:
|
||||||
|
name = name.strip()
|
||||||
|
try:
|
||||||
|
salary = salary.strip()
|
||||||
|
salary = salary.strip("$€")
|
||||||
|
salary = int(salary)
|
||||||
|
except (ValueError, TypeError) as exc:
|
||||||
|
print(f"Warning: could not parse data on line {i+1}: {exc}")
|
||||||
|
else:
|
||||||
|
employee_salaries[name] = salary
|
||||||
|
except FileNotFoundError as exc:
|
||||||
|
print(f"Could not open file: {exc}")
|
||||||
|
|
||||||
|
|
||||||
|
print("Min. Gehalt:", min(employee_salaries.values()))
|
||||||
|
print("Max. Gehalt:", max(employee_salaries.values()))
|
||||||
|
|
||||||
|
print("-" * 50)
|
Loading…
Reference in New Issue