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.')
2108491

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.