Informatik – die neusten Beiträge

Python 3: Ich habe Fragen zur Implementation des Huffman-Code. Könnt ihr mir helfen?

Hallo Leute,

ich hoffe, dass ich hiermit nicht den Shitstorm of Doom heraufbeschwöre, aber ich komme seit fünf Tagen partout nicht weiter.

1) (2 Punkte) Gegeben sei folgende Nachricht: ”Mississippi River in Ontario isn’t Mississippi River in Mississippi!”

Zeichne den zugehörigen Huffman-Baum und stelle die Codetabelle auf, wie sie es in der Vorlesung gelernt haben. Geben Sie alle erforderlichen Werte an! Wie lautet die oben angegebene Nachricht in ihrer codierten Form?

2) (2 Punkte) Schreibe ein Python 3.7.x Programm, welches die in der Aufgabe 11.1 aufgestellte Codetabelle beinhaltet. Das Programm soll Befehle encode und decode verstehen und die darauffolgende Eingabe codieren oder decodieren können. Falsche Eingaben sind mit einer Warnung in der Konsole zu quittieren. Geben jeweils 5 Testfälle für Codierung und Decodierung an. Zusätzlich gebe an, wie Deine Implementierung die Nachricht

3) (4 Punkte) Schreibe ein in Python 3.7.x Programm, welches eine Eingabe (Nachricht) über die Konsole entgegennimmt, sie analysiert und basierend darauf eine Codetabelle aufbaut.

  • Gebe diese Codetabelle in der Konsole aus.
  • Gebe die codierte Eingabe in der Konsole aus.
  • Implementiere eine Funktion zur Decodierung und gebe die decodierte Nachricht zur Verifikation in der Konsole aus.

Setze die Befehle newbase und showtable um. Ermögliche damit eine neue Eingabe und lasse für diese eine neue Codetabelle berechnen und gegebenenfalls ausgeben. Setze weiterhin Befehle encode und decode um, wie Du es in der Aufgabe 11.2 gemacht hast.

Hinweise:

Zur Lösung dieser Aufgabe dürfen built-in Sortiermethoden verwendet werden. Denke daran, dass nicht alle Datentypen geordnet sind. Dennoch können hier auch solche Datentypen sehr hilfreich sein.

Nicht lauffähige Programme werden nicht bewertet, dabei gilt als Maßstab NUR die Ausführbarkeit in der Konsole!

Aufgabe 1 hab ich noch lösen können,

Ich weiß, im Netz gibt es gefühlt 3000 Huffman Code-Tutorials, aber die sind alle auf fortgeschrittenen Niveau und erklären auch nicht, wie ich diese Code-Tabelle implementieren soll. Zur Erklärung:

  • Spalte 1: Die relative Häufigkeit, wie oft ein Zeichen allgemein im String vorkommt.
  • Spalte 2: Der Logarithmus dualis:



  • Spalte 3: Blockcode der Reihe nach aufgeschrieben
  • Spalte 4: Der Huffman Code (auf den 0 und 1 in der Grafik basierend)
  • Spalte 5: Gewichtete Codelänge (Anzahl der Bits im Huffman-Code * Relative Häufigkeit)

Wie kann ich das in Python berechnen lassen und zusätzlich noch in so einer Tabellenform ausgeben? Dazu müsste man doch alle Werte von diesem Baum manuell eintragen, oder nicht?

Kann ich bei Aufgabe 2) nicht einfach die Variablen neu definieren, z.B. "M == 000" oder ist das geschummelt?

Bild zum Beitrag
Computer, Technik, programmieren, Informatik, Python, Technologie

UML Diagramm in Python umsetzen?

Chrutschow. Nachdem mein Versuch, vorgegebene Datentypen in ein Klassendiagramm zu schreiben, bemerkenswert kläglich scheiterte, heute nun the-other-way-round: Ein UML Diagramm in Python umsetzen:

Insbesondere frage ich mich, wie bei der Implementierung zwischen Vererbung, Aggregation und gerichteten Assoziationen unterschieden wird. Scheinbar gibt es dafür 2000 Tutorials mit 30000 unterschiedlichen Lösungsansätzen. Außerdem weiß ich nicht, was genau die einzelnen Objekte tun. Zum Beispiel steht beim Professor nur Kostencenternummer als geschützte Variable. Und der WiMi macht anscheinend gar nichts. Was schreibe ich in die Getter und Setter?

Hier der bisherige Ansatz:

######Vererbung
"""This programm models the UML diagram of the inheritante between
members and professors.
"""
class Member:
  name = ""

  def __init__(self, name, id_number):
    self.name = name
    self.id_number = id_numer

class Professor(Member):
  def __init__(self, name, id_number, cost_center_no):
    self.name = name
    self._cost_center_no = _cost_center_no

  def get_cost_center_no(self):
    # Wie Kostenstellennummer umsetzen?

class WiMi(Member):
  def __init__(self, name, id_number):
    self.name = name             

Aggregation

class Presentation:
  def __init__ (self, title, date):
    self.title = name
    self.date = date

  def change_date(self):
    print ("Class Owner: method1")

Gerichtete Assoziation

class research_group:
  def __init__(self, name, total_presentation):
    self.name = name
    self.total_presentation = total_presentation
    self.name = name

  def get_members(id_number, name, total_representation):
  
  def get_head (id_number, name, total_reprensentation)

  def set_head (id_number, name, total_reprensentation)

  def add_member (id_number, name, total_representation)

  #Was machen diese Methoden?
Bild zum Beitrag
programmieren, Informatik, Python, UML, Klassendiagramm, Objektorientiert, Objektorientierte Programmierung, OOP Programmierung

Klassen- und Objektdiagramme in UML?

Hallo Leute,

normalerweise hasse ich es, wenn man so lächerlich einfache Fragen, die sich mit zwei Minuten googeln selbst beantwortet, stellt, aber ich komme nach zwei Tagen Recherche immer noch nicht auf den Trichter:

Aufgabe:

Erstellen Sie ein UML-Diagramm für folgende, sowie eine weitere übergeordnete Klasse mit den gegebenen Attributen und Methoden. Geben Sie in ihrem UML-Diagramm auch Konstruktoren an. Passen Sie die Namen an, beachten Sie hierbei PEP 8.Erzeugen Sie eine sinnvolle Vererbungshierarchie zwischen den Klassen.

Hinweis: Überlegen Sie genau, was die angegebenen Klassen verbindet.

Angestellter

• Personalnummer

• Name

• Adresse

• Geburtsdatum

• Gehalt

• Bankverbindung

• DruckeAdresse()

• ÜberweiseGehalt()

Student

•Matrikelnummer

•Name

•Adresse

•Geburtsdatum

•DruckeAdresse()

•DruckeAusweis()

Hilfskraft

• Matrikelnummer

• Name

• Adresse

• Geburtsdatum

• Personalnummer

• Beschäftigungsart

• DruckeAdresse()

• DruckeAusweis()

• DruckeArbeitszeiten()

Erstellen Sie zwei Objektdiagramme, welche dieses Klassendiagramm erfüllen. Generieren Sie die erforderlichen Objektwerte

Mein Ansatz/Problem: Die eigenen Klassen interagieren doch überhaupt nicht miteinander? Die einzige Vererbung findet zwischen Stundeten und Hilfskraft statt. Selbst die Hilskraft bekommt noch nicht mal Gehalt. Wie soll man das in einem UML-Diagramm verbinden? Und soll man als Objektdiagramm dann einfach nur 8 Kästchen malen, ohne Pfeile?

Schule, programmieren, Informatik, UML, Klassendiagramm, Vererbung, Objektorientierte Programmierung, OOP Programmierung

Python "Schere-Stein-Papier" funktioniert nicht, man kann nicht gewinnen?

Ich bin nun so gut wie fertig mit meinem Spiel, aber man kann nicht gewinnen. Ich habe es auch mit "try except" versucht, aber hat auch nicht funktioniert. Woran kann das liegen?

Ich weiß man könnte das schöner/besser machen, aber mir passt es so:)

Code:

#Imports
import time
import random
random.seed()

	#Headline
print("*************************"); time.sleep(0.5)
print("*Schere - Stein - Papier*"); time.sleep(0.5)
print("*************************"); time.sleep(0.5)

true = True

while true == True:

	print("-------------------------------") #Abtrennung
	#Input
	print("Wählen Sie eine Figur: ")
	spielerwahl = input().lower()
	print("")
	
	computerwahl = ["schere", "stein", "papier"]

	#Output
	print("Sie wählten: ", spielerwahl)
	pc = random.choice(computerwahl)
	print("Der Computer wählte: ", pc)
	print("")

	#Verzweigungen
	if spielerwahl == pc:
		print("*********Unentschieden!*********")
		
	#Spielerwahl = Schere
	elif spielerwahl == "schere" or spielerwahl == "Schere" and pc == "stein":
		print("***********Verloren!***********")
		
	elif spielerwahl == "schere" or spielerwahl == "Schere" and pc == "papier":
		print("***********Gewonnen!***********")
	
	#Spielerwahl = Stein
	elif spielerwahl == "stein" or spielerwahl == "Stein" and pc == "papier":
		print("***********Verloren!***********")
		
	elif spielerwahl == "stein" or spielerwahl == "Stein" and pc == "schere":
		print("***********Gewonnen!***********")
	
	#Spielerwahl = Papier
	elif spielerwahl == "papier" or spielerwahl == "Papier" and pc == "schere":
		print("***********Verloren!***********")
		
	elif spielerwahl == "papier" or spielerwahl == "Papier" and pc == "stein":
		print("***********Gewonnen!***********")
		
	#Fehlermeldung
	else:
		print("*********Nicht möglich!*********")
	
	#Abtrennung
	print("-------------------------------")
	print(""); time.sleep(1.5)
Computer, Technik, IT, programmieren, Informatik, Python, Technologie, Spiele und Gaming

Python in Java übersetzen?

Hi, ich brauche eure Hilfe.

Ich habe für den Informatikunterricht in der Schule mit Python ein Programm geschrieben welches die Kosten für Pakete ausrechnet.

Nun ist mir eingefallen, dass ich in der Schule keine Python-Konsole habe, um das Programm laufen zu lassen. Wir haben nur BlueJ, was meines Wissens eine Java-Konsole ist.

Ich kann leider kein Java und im Internet bin ich auch auf keine Übersetzer gestoßen.

Hat jemand eine Idee wie ich diesen Code:

import time

a = "Die Kosten für ihr Paket betragen "
print("Paketrechner startet...")
time.sleep(1)
print("Paketrechner erfolgreich gestartet!")
print(" \n Bitte gib folgende Parameter an und bestätige mit Enter: \n")
print("Länge des Pakets:")
l = int(input())

if l > 175:
  print("Dein Paket ist zu lang!")

print("Breite des Pakets in cm:")
b = int(input())
print("Höhe des Pakets in cm:")
h = int(input())
p = 2(h + b) + l

if p > 300:
  print("Das Packmaß ist ungültig. Es beträgt über 300cm oder es wurden falsche Werte eingegeben. Die Länge des Pakets darf maximal 170 cm betragen!")

if p <= 300:
  print("Das Packmaß beträgt")
  print(p)
  print("Geben Sie nun das Gewicht des Pakets in kg ein.")
  g = int(input())

  if g > 31:
    print("Dieser Paketrechner unterstützt nur Pakete bis zu einem Gewicht von 31 kg!")
  elif g < 2:
    print(a + "3,80€")
  elif g < 4:
    print(a + "5,10€")
  elif g < 6:
    print(a + "6,30€")
  elif g < 8:
    print(a + "6,80€")
  elif g < 10:
    print(a + "7,40€")
  elif g < 12:
    print(a + "7,80€")
  elif g < 14:
    print(a + "8,50€")
  elif g < 18:
    print(a + "10,30€")
  elif g < 25:
    print(a + "13,30€")
  elif g < 31:
    print(a + "14,00")

in Java bekomme?

PC, Computer, programmieren, Java, BlueJ, Eclipse, Informatik, Python, übersetzen

Meistgelesene Beiträge zum Thema Informatik