Add solutions for uebungen for files
Signed-off-by: Christopher Arndt <chris@chrisarndt.de>
This commit is contained in:
		
							parent
							
								
									205c83790c
								
							
						
					
					
						commit
						dd36861233
					
				
							
								
								
									
										137
									
								
								loesungen/dateien.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										137
									
								
								loesungen/dateien.py
									
									
									
									
									
										Normal file
									
								
							@ -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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user