Space Python Ładowanie Pythona…

Logowanie zamiast print

Napraw kodŚredni 2 etapy

Podczas szukania błędu czujnika paliwa ktoś dodał print() dla każdego zbiornika. Błąd jest naprawiony, ale wypisywania zostały, a sprawdzanie przed odpaleniem zakopuje swoją jedyną ważną linię, pusty zbiornik, pod liniami, których nikt nie potrzebuje.

Przejdź na moduł logging, w którym każdy komunikat ma poziom, a ty decydujesz, które poziomy pokazać.

Zastąp każde print() wywołaniem logging dla jego poziomu: logging.debug(), logging.info(), logging.warning() albo logging.error(), i usuń poziom z tekstu, bo dodaje go format. Przy poziomie INFO linie debug znikają:

INFO TANK-1 w porządku: 78.3%
WARNING TANK-2 ma mało paliwa: 12.4%
ERROR TANK-3 jest pusty
INFO Sprawdzanie zbiorników zakończone

Linię basicConfig() zostaw bez zmian. Ukryte testy przełączają ją na DEBUG i oczekują, że twoje linie debug wrócą.

Tylko to, co ważne
Bez wypisywań

Ukończ etap 1, aby odblokować ten etap.

W większym programie loguje każdy moduł. Daj temu kodowi własny logger, log = logging.getLogger("fuel"), loguj przez niego i dodaj jego nazwę do formatu przez %(name)s. Włącz wpisy debug tylko dla tego loggera przez log.setLevel(logging.DEBUG):

DEBUG fuel: sprawdzam TANK-1: 78.3%
INFO fuel: TANK-1 w porządku: 78.3%
DEBUG fuel: sprawdzam TANK-2: 12.4%
WARNING fuel: TANK-2 ma mało paliwa: 12.4%
DEBUG fuel: sprawdzam TANK-3: 0.0%
ERROR fuel: TANK-3 jest pusty
INFO fuel: Sprawdzanie zbiorników zakończone

Reszta programu zostaje na poziomie INFO: tylko logger paliwa pokazuje swoje linie debug.

Z nazwą i włączonym debug
Przez logger paliwa
Nie jesteś zalogowany, więc postęp zostaje tylko w tej przeglądarce. Zaloguj się, aby go zapisać i korzystać z podpowiedzi oraz rozwiązań.

Podpowiedzi

Import modułów systemowych

import-modulow-systemowych.py
# Moduł to skrzynka z narzędziami, którą ktoś już zbudował i przetestował za Ciebie

# Zwykły import wczytuje cały moduł
import sys
import platform
import math

# from ... import wczytuje tylko jedno narzędzie
from math import sqrt

# as nadaje modułowi krótszy przydomek
import random as rng

# Przy zwykłym imporcie: nazwa modułu, kropka, potem narzędzie
print("Wersja Pythona:", platform.python_version())
print("System:", platform.system())
print("Python mieszka w:", sys.executable)

# math zawiera stałe, których nie chciałbyś wpisywać z pamięci
radius_km = 6371
print("Obwód Ziemi:", round(2 * math.pi * radius_km), "km")

# sqrt przyszło samo, więc nie potrzebuje kropki przed sobą
print("Pierwiastek kwadratowy z 9:", sqrt(9))

# rng to po prostu przydomek dla random
print("Losowy dzień roku marsjańskiego:", rng.randint(1, 687))
Otwórz cały przykład
script.py
PythonWiersz 1, kol. 1Spacje: 4
Ładowanie środowiska Pythona…

Oddziel argumenty przecinkami. Każde uruchomienie przekazuje je jako sys.argv[1:].