mirror of
https://github.com/DavidGailleton/42-Piscine_Python.git
synced 2026-04-28 16:14:35 +02:00
1cf669e6f8
mypy compliance
79 lines
2.0 KiB
Python
79 lines
2.0 KiB
Python
from typing import Any
|
|
|
|
|
|
def artifact_sorter(artifacts: list[dict[Any, Any]]) -> list[dict[Any, Any]]:
|
|
try:
|
|
return sorted(artifacts, key=lambda artifact: artifact["power"])
|
|
except KeyError as err:
|
|
print(err)
|
|
return artifacts
|
|
|
|
|
|
def power_filter(
|
|
mages: list[dict[Any, Any]], min_power: int
|
|
) -> list[dict[Any, Any]]:
|
|
try:
|
|
return list(filter(lambda x: x["power"] >= min_power, mages))
|
|
except KeyError as err:
|
|
print(err)
|
|
return mages
|
|
|
|
|
|
def spell_transformer(spells: list[str]) -> list[str]:
|
|
return list(map(lambda x: "* " + x + " *", spells))
|
|
|
|
|
|
def mage_stats(mages: list[dict[Any, Any]]) -> dict[str, int | float]:
|
|
try:
|
|
max_power = max(mages, key=lambda mage: mage["power"])
|
|
min_power = min(mages, key=lambda mage: mage["power"])
|
|
avg_power = sum(map(lambda mage: mage["power"], mages)) / len(mages)
|
|
return {
|
|
"max_power": max_power["power"],
|
|
"min_power": min_power["power"],
|
|
"avg_power": round(avg_power, 2),
|
|
}
|
|
except Exception:
|
|
return {
|
|
"max_power": 0,
|
|
"min_power": 0,
|
|
"avg_power": 0,
|
|
}
|
|
|
|
|
|
def main() -> None:
|
|
try:
|
|
artifacts = [
|
|
{"power": 30},
|
|
{"power": 10},
|
|
{"power": 300},
|
|
{"power": 400},
|
|
{"power": 200},
|
|
{"power": 3},
|
|
{"power": 10},
|
|
]
|
|
str_list = [
|
|
"Hello",
|
|
"World",
|
|
"Lorem",
|
|
"ipsum",
|
|
]
|
|
|
|
print("=== artifact_sorter ===")
|
|
print(f"Sorted artifacts: {artifact_sorter(artifacts)}")
|
|
|
|
print("\n=== power_filter ===")
|
|
print(f"Filtered artifacts: {power_filter(artifacts, 100)}")
|
|
|
|
print("\n=== spell_transformer ===")
|
|
print(f"Transformed str: {spell_transformer(str_list)}")
|
|
|
|
print("\n=== mage_stats ===")
|
|
print(f"Get power info: {mage_stats(artifacts)}")
|
|
except Exception as err:
|
|
print(err)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|