Zmienne i Typy Danych w Pythonie - Poznaj zmienne i typy danych w Pythonie - fundamenty programowania. Dowiedz się, jak efektywnie przechowywać liczby, tekst i złożone struktury danych, stosując najlepsze praktyki czystego kodu.

Zmienne i Typy Danych w Pythonie

Podczas pracy z obliczeniami i analizą danych, zrozumienie zmiennych i typów danych w Pythonie jest kluczowe. Niezależnie od tego, czy obliczasz prędkości obiektów czy przetwarzasz dane, te podstawy będą stanowić fundament dla bardziej złożonych programów.

Czym są Zmienne w Pythonie?

Wyobraź sobie zmienne jako samoprzylepne karteczki do przechowywania zapisków. Podobnie jak różne komponenty przechowują różne rodzaje paliwa czy sprzętu, zmienne w Pythonie mogą przechowywać różne typy danych. W Pythonie tworzenie zmiennej jest tak proste, jak nadanie jej nazwy i przypisanie wartości za pomocą znaku równości (=). Jest to zatem karteczka z nazwą i wartością - ot taka metafora, dzięki której lepiej zapamiętasz czym są zmienne.

Zasady Nazywania Zmiennych

Podczas programowania musimy przestrzegać określonych protokołów. Podobnie przy nazywaniu zmiennych w Pythonie, musimy przestrzegać następujących zasad:

  • Nazwy muszą zaczynać się od litery lub podkreślenia
  • Mogą zawierać litery, cyfry i podkreślenia
  • Rozróżniają wielkość liter (satellite_speed i Satellite_Speed to różne zmienne)
  • Nie mogą używać słów zarezerwowanych Pythona

Słowa Zarezerwowane w Pythonie

Python rezerwuje pewne słowa do własnego użytku. Nie możesz używać ich jako nazw zmiennych:

# Najczęściej używane słowa zarezerwowane:
False   class    finally  is       return
None    def     for      lambda   try
True    del     from     nonlocal while
and     elif    global   not      with
as      else    if      or       yield
break   except  import   pass

Przykłady poprawnych nazw zmiennych:

orbital_velocity = 7.8  # kilometry na sekundę
ISS_altitude = 408     # kilometry
number_of_astronauts = 7
_mission_duration = 180  # dni

Podstawowe Typy Danych w Pythonie

Liczby

Liczby Całkowite (int)

Liczby całkowite bez miejsc po przecinku, idealne do liczenia obiektów:

number_of_planets = 8
satellite_count = 3400

Liczby Zmiennoprzecinkowe (float)

Liczby z miejscami po przecinku, niezbędne do precyzyjnych obliczeń:

earth_mass = 5.972e24  # kilogramy
spacecraft_velocity = 11.2  # km/s

Liczby Zespolone (complex)

Używane w obliczeniach matematycznych, częste w dynamice i analizie fal:

signal_data = 3 + 4j  # Reprezentacja liczby zespolonej
wave_function = 2.5 + 1.8j  # Używane w obliczeniach kwantowych
antenna_impedance = complex(100, 20)  # Tworzenie z części rzeczywistej i urojonej

Ciągi Znaków (str)

Dane tekstowe, przydatne do przechowywania nazw i opisów:

mission_name = "Artemis"
spacecraft_status = 'Gotowy do startu'

Wartości Logiczne (bool)

Wartości True/False (Prawda/Fałsz), idealne do sprawdzania statusów:

is_in_orbit = True    # Jest na orbicie
engines_active = False  # Silniki nieaktywne

Złożone Typy Danych

Listy (lists)

Uporządkowane kolekcje elementów, świetne do przechowywania sekwencji danych:

planet_names = ["Mercury", "Venus", "Earth", "Mars"]
temperatures = [167, 464, 15, -63]  # Średnie temperatury w stopniach Celsjusza

Krotki (Tuples)

Niezmienne sekwencje, przydatne do przechowywania stałych danych:

earth_coordinates = (0, 0, 0)  # współrzędne x, y, z
mission_details = ("Apollo 11", 1969, "Lądowanie na Księżycu")

Zbiory (sets)

Nieuporządkowane kolekcje unikalnych elementów, idealne do filtrowania duplikatów:

# Śledzenie unikalnych sygnałów
signal_sources = {"Voyager1", "ISS", "Hubble", "ISS"}  # Zauważ: ISS pojawia się tylko raz
print(signal_sources)  # Wynik: {'Voyager1', 'ISS', 'Hubble'}

# Znajdowanie wspólnych celów obserwacji między teleskopami
telescope1_targets = {"NGC1234", "M31", "M87", "Mgławica Kraba"}
telescope2_targets = {"M87", "NGC1234", "Mgławica Oriona"}
common_targets = telescope1_targets.intersection(telescope2_targets)

Słowniki (dictionaries)

Pary klucz-wartość, idealne do przechowywania powiązanych danych:

planet_data = {
    "name": "Mars",
    "diameter": 6779,  # kilometry
    "has_moons": True,  # posiada księżyce
    "moons": ["Phobos", "Deimos"]
}

Konwersja Typów

Czasami musimy konwertować między różnymi typami danych. Oto kilka praktycznych przykładów:

# Konwersja danych wejściowych z czujnika na dane numeryczne
temperature_reading = "-173.5"
celsius_temp = float(temperature_reading)  # Konwersja tekstu na float
kelvin_temp = celsius_temp + 273.15  # Operacja matematyczna po konwersji

# Konwersja czasu trwania misji z godzin na dni
mission_hours = "2160"
mission_days = int(mission_hours) // 24  # Dzielenie całkowite po konwersji
print(f"Czas trwania misji: {mission_days} dni")

# Konwersja danych numerycznych na tekst do wyświetlenia
altitude = 408.55
status_message = f"Wysokość ISS: {str(altitude)} km"

Sprawdzanie Typów Zmiennych

Aby sprawdzić, jakiego typu dane przechowuje zmienna:

altitude = 408.0
print(type(altitude))  # Wynik:  

mission_name = "SpaceX Crew-3"
print(type(mission_name))  # Wynik:  

Najlepsze Praktyki

  1. Używaj opisowych nazw zmiennych, które odzwierciedlają ich przeznaczenie
  2. Przestrzegaj przewodnika stylu PEP 8 dla spójnego nazywania
  3. Inicjalizuj zmienne przed ich użyciem
  4. Używaj odpowiednich typów danych do konkretnych potrzeb
  5. Komentuj kod, aby wyjaśnić złożone zmienne

Praktyczny Przykład: Dane Misji

Oto kompletny przykład łączący różne typy danych dla misji:

# Konfiguracja misji
mission_name = "Mars Explorer"
launch_date = "2025-07-20"
crew_size = 4
is_active = True

# Parametry misji
orbital_parameters = {
    "altitude": 408.0,  # km
    "inclination": 51.6,  # stopnie
    "period": 92.68,  # minuty
}

# Lista załogi
crew_members = [
    "Sarah Connor",
    "John Smith",
    "Maria Garcia",
    "Yu Chen"
]

# Etapy misji (niezmienne)
mission_phases = (
    "Launch",        # Start
    "Earth Orbit",   # Orbita ziemska
    "Transit",       # Przelot
    "Mars Orbit",    # Orbita Marsa
    "Landing"        # Lądowanie
)

Podsumowanie

Zrozumienie zmiennych i typów danych jest niezbędne dla każdego programisty Pythona. Te podstawy pozwalają efektywnie przechowywać, manipulować i przetwarzać różne rodzaje danych, od prostych obliczeń numerycznych po złożone parametry misji.

W miarę kontynuowania nauki programowania w Pythonie, odkryjesz, że te podstawowe koncepcje służą jako fundamenty dla bardziej zaawansowanych operacji, takich jak złożone obliczenia, przetwarzanie danych i analiza telemetrii.

Photo by frank mckenna on Unsplash

# Liczby całkowite
number_of_planets = 8
satellite_count = 3400

# Liczby zmiennoprzecinkowe
earth_mass = 5.972e24  # kilogramy
spacecraft_velocity = 11.2  # km/s

# Ciągi znaków
mission_name = "Artemis"
spacecraft_status = "Gotowy do startu"

# Wartości logiczne
is_in_orbit = True    # Jest na orbicie
engines_active = False  # Silniki nieaktywne

# Listy
planet_names = ["Mercury", "Venus", "Earth", "Mars"]
temperatures = [167, 464, 15, -63]  # Średnie temperatury w stopniach Celsjusza

# Krotki
earth_coordinates = (0, 0, 0)  # współrzędne x, y, z
mission_details = ("Apollo 11", 1969, "Lądowanie na Księżycu")

# Słowniki
planet_data = {
    "name": "Mars",
    "diameter": 6779,  # kilometry
    "has_moons": True,  # posiada księżyce
    "moons": ["Phobos", "Deimos"]
}

# Przykłady konwersji typów
# Konwersja tekstu na liczbę całkowitą
astronaut_count = int("7")

# Konwersja liczby całkowitej na zmiennoprzecinkową
gravity = float(9)  # staje się 9.0

# Konwersja liczby na tekst
temperature_reading = str(-63)  # staje się "-63"

# Sprawdzanie typów
altitude = 408.0
print(type(altitude))  # Wynik: 

mission_name = "SpaceX Crew-3"
print(type(mission_name))  # Wynik: 

# Kompletny przykład misji
# Konfiguracja misji
mission_name = "Mars Explorer"
launch_date = "2025-07-20"
crew_size = 4
is_active = True

# Parametry misji
orbital_parameters = {
    "altitude": 408.0,  # km
    "inclination": 51.6,  # stopnie
    "period": 92.68,  # minuty
}

# Lista załogi
crew_members = [
    "Sarah Connor",
    "John Smith",
    "Maria Garcia",
    "Yu Chen"
]

# Etapy misji (niezmienne)
mission_phases = (
    "Launch",        # Start
    "Earth Orbit",   # Orbita ziemska
    "Transit",       # Przelot
    "Mars Orbit",    # Orbita Marsa
    "Landing"        # Lądowanie
)