sorting and PLF example 2 with modern form.
a lot of C# to be real!
This commit is contained in:
74
PLF/plf/bsp2_modern.py
Normal file
74
PLF/plf/bsp2_modern.py
Normal file
@@ -0,0 +1,74 @@
|
||||
from typing import List
|
||||
|
||||
def add_mountain(names: List[str], heights: List[int]) -> None:
|
||||
"""Add a new mountain entry if it doesn't already exist."""
|
||||
name = input("Name des Berges: ").strip()
|
||||
if name in names:
|
||||
print("Schon vorhanden.")
|
||||
return
|
||||
|
||||
try:
|
||||
height = int(input("Höhe: ").strip())
|
||||
except ValueError:
|
||||
print("Ungültige Eingabe! Bitte eine Zahl angeben.")
|
||||
return
|
||||
|
||||
names.append(name)
|
||||
heights.append(height)
|
||||
print(f"'{name}' mit {height} m wurde hinzugefügt.")
|
||||
|
||||
|
||||
def display_mountains(names: List[str], heights: List[int]) -> None:
|
||||
"""Print the list of all mountains and their heights."""
|
||||
print("\nBergliste:")
|
||||
for name, height in zip(names, heights):
|
||||
print(f" • {name}: {height} m")
|
||||
|
||||
|
||||
def get_highest_mountain(names: List[str], heights: List[int]) -> tuple[str, int]:
|
||||
"""Return the highest mountain as (name, height)."""
|
||||
max_height = max(heights)
|
||||
index = heights.index(max_height)
|
||||
return names[index], max_height
|
||||
|
||||
|
||||
def calculate_average_height(heights: List[int]) -> float:
|
||||
"""Return the average height of all mountains."""
|
||||
return sum(heights) / len(heights)
|
||||
|
||||
|
||||
def count_3000ers(heights: List[int]) -> int:
|
||||
"""Return how many mountains are 3000 meters or higher."""
|
||||
return sum(h >= 3000 for h in heights)
|
||||
|
||||
|
||||
def main() -> None:
|
||||
"""Main program loop."""
|
||||
print("Berge Österreich")
|
||||
|
||||
mountain_names = ["Großglockner", "Wildspitze", "Weißkugel", "Großvenediger"]
|
||||
mountain_heights = [3798, 3768, 3738, 3657]
|
||||
|
||||
while True:
|
||||
choice = input("Neue Eingabe (j/n)? ").strip().lower()
|
||||
if choice == "j":
|
||||
add_mountain(mountain_names, mountain_heights)
|
||||
elif choice == "n":
|
||||
break
|
||||
else:
|
||||
print("Bitte nur 'j' oder 'n' eingeben.")
|
||||
|
||||
display_mountains(mountain_names, mountain_heights)
|
||||
|
||||
highest_name, highest_height = get_highest_mountain(mountain_names, mountain_heights)
|
||||
print(f"\nDer höchste Berg ist der {highest_name} mit {highest_height} m.")
|
||||
|
||||
avg_height = calculate_average_height(mountain_heights)
|
||||
print(f"Die durchschnittliche Höhe beträgt {avg_height:.1f} m.")
|
||||
|
||||
count = count_3000ers(mountain_heights)
|
||||
print(f"In der Liste sind {count} 3000er gespeichert.")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user