• 1
    Eingabe und Ausgabe
    • Aufgaben
  • 2
    Bedingungen
    • Aufgaben
  • 3
    For-Schleife
    • Aufgaben
  • 4
    Zeichenketten
    • Aufgaben
  • 5
    While-Schleife
    • Aufgaben
  • 6
    Listen
    • Aufgaben
  • 7
    2D-Arrays
    • Aufgaben
  • 8
    Wörterbücher
    • Aufgaben
  • 9
    Mengen
    • Aufgaben
  • 10
    Funktionen und Rekursion
    • Aufgaben
  • к

Lektion 1. Entering and output of data

Schwierigkeit:

Aufgabe«Parser für Logdateien»

💻 Python

Schreiben Sie ein Programm, das die Server-Logdatei einliest, alle eindeutigen IP-Adressen findet und deren Anzahl ausgibt. & nbsp;

rn

Einige Textzeilen, einige Textzeilen, einige Zeilen. Jede davon ist ein Eintrag im Log. Die IP-Adresse ist immer das erste Element in der Zeile und wird durch ein Leerzeichen vom Rest getrennt. Die Eingabe endet, wenn "0" übermittelt wird.

Eingabeformat

mehrere Zeilen. Die IP steht immer ganz am Anfang.

Ausgabeformat

Eine Zahl & mdash; Die Anzahl der eindeutigen IP-Adressen, die in den Eingabedaten gefunden wurden.

Beispiel

Eingabe

192.168.0.1 - [10/Jan/2024: 13:55:36 +0000] "GET /index.html HTTP/1.1" 200 2326
192.168.0.2 - [10/Jan/2024: 12:11:06 +0000] "GET /index.html HTTP/1.1" 200 1234
192.168.0.1 - [11/Jan/2024: 16:45:21 +0000] "GET /index.html HTTP/1.1" 200 2326
0

Ausgabe

2

Hinweis

There will be no clue here, decide for yourself!

main.py
Test 1
Test 2
Test 3
Test 4
Test 5
Test 6
Test 7
Test 8
Test 9
Test 10
Entwicklerlösung
# Множество для хранения уникальных IP-адресов
unique_ips = set()

while True:
    line = input().strip()
    
    # Проверка на завершение ввода
    if line == "0":
        break
    
    # Пропускаем пустые строки
    if not line:
        continue
    
    # Извлекаем первый элемент строки (предполагаемый IP)
    parts = line.split()
    if not parts:
        continue
        
    potential_ip = parts[0]
    
    # Проверяем, является ли строка валидным IPv4 адресом
    # Разделяем строку по точкам
    ip_parts = potential_ip.split('.')
    
    # Должно быть ровно 4 части
    if len(ip_parts) != 4:
        continue
    
    valid_ip = True
    # Проверяем каждую часть IP
    for part in ip_parts:
        # Каждая часть должна состоять только из цифр
        if not part.isdigit():
            valid_ip = False
            break
        
        # Преобразуем в число и проверяем диапазон (0-255)
        num = int(part)
        if num < 0 or num > 255:
            valid_ip = False
            break
        
        # Проверяем, нет ли ведущих нулей (кроме случая, когда число равно 0)
        if len(part) > 1 and part[0] == '0':
            valid_ip = False
            break
    
    # Если IP валиден - добавляем в множество
    if valid_ip:
        unique_ips.add(potential_ip)

# Выводим количество уникальных IP-адресов
print(len(unique_ips))

🎉 Glückwunsch! 🎉

Du hast die Aufgabe hervorragend gelöst! Es war schwierig, aber du hast die Lösung gefunden. Du bist dem Meister einen Schritt näher! Mach weiter so.

AD

Werbung

red-snake blue-snake green-snake

Führe deinen Code aus...

KI-Assistent

Hallo! Ich bin dein Programmier-Assistent. Stelle mir beliebige Fragen zu Python — ich erkläre Funktionen, Methoden und helfe dir bei der aktuellen Aufgabe!