Python :: Aufgabe #101

3 Lösungen Lösungen öffentlich

Ermitteln der IP-Klasse

Anfänger - Python von Energy - 09.03.2016 um 14:48 Uhr
Schreibe ein Programm, was nach einer IP-Adresse fragt. Anschließend soll die IP-Klasse ermittelt und ausgegeben werden.

Lösungen:

vote_ok
von AnnaIhrs (460 Punkte) - 05.07.2016 um 16:55 Uhr
Quellcode ausblenden Python-Code
#!/usr/bin/python3
# -*- encoding: utf-8 -*-
#
#>>>autor:      Sebastian Müller
#>>>licence:    GPL
#>>>contact:    mypythonmueller@gmail.com
#

#Programm nach folgender Aufgabenstellung:

#Schreibe ein Programm, was nach einer IP-Adresse fragt. Anschließend soll die 
#IP-Klasse ermittelt und ausgegeben werden. 

ok = 0
while not ok:
    ad = input("Bitte Netzwerkadresse eingeben:")
    if ":" in ad and len(ad) > 24 and len(ad) < 40:
        print("Bei der eingegebenen Netwerkadresse handelt es sich um eine IPv6-Adresse")
        ok = 1
    elif "." in ad and len(ad) > 10 and len(ad) < 16:
        print("Bei der eingegebenen Netwerkadresse handelt es sich um eine IPv4-Adresse")
        ok = 1
    else:
        print("Die Eingegebene Ip-Adresse ist nicht korreckt.")
vote_ok
von Cryptt (390 Punkte) - 16.08.2016 um 15:32 Uhr
Quellcode ausblenden Python-Code
# Bestimmung der Klasse einer IP Adresse
klasse = (['Klasse A','Klasse B','Klasse C','Klasse D','Klasse E'],
          [127,191,223,239,255])

def klassencheck(addr):
    for i in range(5):
        if addr <= klasse[1][i]:
            print('Deine eingegebene Adresse',eingabeIP,'entspricht der',klasse[0][i])
            break

while True:
    try:    
        print('Bitte gib eine IP Adresse in folgender Form ein(xxx.xxx.xxx.xxx)')
        eingabeIP = input('IP: ')
        addr = int(eingabeIP[0:3])
        break
        
    except ValueError:
        print('Bitte eine gueltige Adresse wie folgt eingeben: 032.012.112.168')

klassencheck(addr)
vote_ok
von Peter... (160 Punkte) - 19.08.2016 um 17:57 Uhr
Hier meine Lösung. Es wurde Python 3 genutzt.
Habe ich die IP-Klasse als Netzklasse richtig verstanden?
https://de.wikipedia.org/wiki/Netzklasse
Quellcode ausblenden Python-Code
def Abfrage(x, adress_part, Adresse):
	if x[0] <= adress_part <= x[1]:
		print('\nDie Adresse', Adresse, 'ist in der Netzklasse', x[2]+'.')
		
		
Adresse = input('Bitte geben Sie eine IP-Adresse der Form n.n.n.n ein:\n')
parts = Adresse.split('.')

#Die folgende if-Abfrage und Schleife dient zur Abfangung falscher Eingaben
try:
	if Adresse.count('.') != 3:
		raise SyntaxError()
	for i in parts:
		if int(i) > 255:
			raise SyntaxError()

#Dieser Teil ermittelt anhand des ersten Teils der Adresse die Klasse
	adress_part = int(Adresse[0:Adresse.index('.')])
	tupel = ((0, 127, 'A'), (128, 191, 'B'), (192, 223, 'C'), (224, 239, 'D'), (240, 255, 'E'))
	for j in tupel:
		Abfrage(j, adress_part, Adresse)
except:
	print('\nSie haben eine falsche Eingabe getätigt!\nDie Adresse darf nur aus Zahlen bestehen\nund muss durch drei "." aufgespalten sein!\n Z.B. 203.0.113.195' )
	
#Mir ist bewusst, dass es auch die unten stehende Möglichkeit gibt, die zudem performanter ist, als die obere, aber ich wollte das Ganze etwas verkürzen.
	
# if 0 =< adress_part <= 127:
	# print('\nDie Adresse', Adresse, 'ist in der Netzklasse A.')
# elif 128 =< adress_part <= 191:
	# print('\nDie Adresse', Adresse, 'ist in der Netzklasse B.')
# elif 192 =< adress_part <= 223:
	# print('\nDie Adresse', Adresse, 'ist in der Netzklasse C.')
# elif 224 =< adress_part <= 239:
	# print('\nDie Adresse', Adresse, 'ist in der Netzklasse D.')
# elif 240 =< adress_part <= 255:
	# print('\nDie Adresse', Adresse, 'ist in der Netzklasse E.')