Forum / Grundlagen des Programmierens / Sammlung aller Fragen des 2.Kolloquiums

Sammlung aller Fragen des 2.Kolloquiums

Hallo,

Könnte hier bitte jeder seine jeweiligen Programmier-Aufgabenstellungen posten? Das würde die Qualität von Studify und den Wert unserer Studiengänge deutlich heben.

Lg, Luki

Stephanie +3

So ungefähr war eine Aufgabe: Erstellen Sie eine Klasse Getraenke. Im Konstruktor sollen Name des Getränks und Menge in ml übergeben werden. Überlagern Sie den print Operator - ausgegeben werden soll zb "Ich bin ein Bier und habe 500 ml. Schreiben Sie außerdem eine Funktion trinken(x). Ausgegeben werden soll: "Vom Getränk Bier wurden 10 ml getrunken." Sollte das Bier ausgetrunken worden sein, soll ausgegeben werden "Das Bier wurde ausgetrunken"

Stephanie +7

Meine Theoriefragen:

  • was bedeutet keyError?
  • was macht der Konstruktor?
  • wie erstellt man mit sql eine neue Tabelle?
  • wofür braucht man Vererbung?
  • wie startet man in einer neuen Klasse die alte Klasse? (alteklasse.init(self)
  • was wird bei Vererbung in die neue Klasse übernommen?
  • wie kann man attribute kapseln (private machen)?
  • welche aussage über ausnahmebehandlung ist falsch?
  • wie heißt die hardware nummer eines rechners?
  • durch welche schicht wird der gesicherte/ungesichterte transport mit/ohne flusskontrolle sichergestellt?
Stephanie +2

An die zweite Programmier-Aufgabe kann ich mich auch ungefähr erinnern: Schreiben Sie eine Funktion readwrite(ein, aus) Parameter : ein - Name der Eingabedatei aus - Name der Ausgabedatei Rueckgabewert - None

Die Funktion zählt, wieviele Buchstaben ein Wort (jeweils eins pro Zeile) hat und gibt diese Zahlen dann zeilenweise aus.

(Zb: Wien Villach Eisenstadt gibt aus: 4 7 10)

Bernhard +3

Schreiben sie eine Klasse Robot.

Getestet soll sie so werden: if name == "main":

meinRoboter = Robot("Marvin", 30, 10)
meinRoboter.step_x(10)
print meinRoboter
meinRoboter.step_x(-22)
meinRoboter.step_y(15)
print meinRoboter

Die Klasse hat also drei Attribute (Name, x_position, y_pos)

Es soll mit der Funktion >> meinRoboter.step_x(-22)<< der Roboter -22 Schritte in x-Richtung machen.

Und dann braucht man noch eine Überladene String-Funktion um aus >>print meinRoboter<< >>Marvin befindet sich bei 40/10 << Herauszubekommen

[SIZE=4]2. Aufgabe:

eine Funtion namens list2Dat

die bekommt eine Liste und einen Integer als Argumente. z.b. Liste=[Hallo", "am", "haus", "mit", "der] und die zahl 3

Die Funktion soll nun entscheiden, ob das wort kürzer oder länger als drei ist. wenn kürzer -> in ein file namens Dat_short.txt hineinschreiben. wenn länger -> in Dat_long.txt reinschreiben.

die Datei Dat_long.txt würde dann so aussehen: Hallo Haus

d.h. Pro Zeile genau ein eintrag

Meine Lösungen findet ihr im Anhang

Manuel ±0
K2

meine heutigen Prüfungsangaben + Lösungen, siehe Anhang. die Wertedatei einfach in eine csv ändern..

Konstantin -1

Erstellen Sie eine Klasse "Kraft", welcher als Attribute der Betrag und die Einheit ('N' oder 'kN') uebergeben werden. Implementieren Sie eine Methode "setF"{,} welche das Setzen des Betrags der Kraft auf einen neuen Wert ermoeglicht. Der Einfachheitshalber wird angenommen, dass die Eingabe in Newton (Einheit 'N') erfolgt.

Zwei oder mehrere Objekte vom Typ "Kraft" sollen mit dem "+"-Operator addiert werden koennen. Wird das Objekt mit print ausgegeben, so soll die Ausgabe wie im Beispiel verdeutlicht erfolgen. Zumindest das Attribut "Betrag" ist als privat zu initialisieren; die uebrigen sind frei waehlbar.

Klassenname: Kraft Attribute: Betrag, Einheit Methoden: setF, Addieren mit +, Ausgeben mit print

Beispiel:

Aufruf in Programm: F1 = Kraft(500,'N') F2 = Kraft(2,'kN') F3 = Kraft(-1000,'N') print F1 # Ausgabe: F = 500 N F1.setF(1500) print F1 # Ausgabe: F = 1500 N print F1 + F2 # Ausgabe: F = 3500 N

Erstellen Sie eine Funktion 'dat2Dict', die eine Datei (.txt) einliest und daraus ein Dictionary aus Buchstaben und Zahlen zurueckgibt. Die Datei enthaelt in jeder Ziele einen Buchstaben und eine Ganzzahl (siehe Beispiel), wobei beide durch einen Beistrich (",") getrennt sind. Der Buchstabe (str) bildet im Dictionary den Key und die entsprechenden Zahl (int) den dazugehoerigen Value. Es kann angenommen werden, dass kein Buchstaben doppelt vorkommt. Auch Gross- und Kleinschreibung koennen vernachlaessigt werden.

Dateizeilenstruktur: str,int str,int

Funktionsname: Buchstabenkodierung Parameter: string (Dateiname) Rueckgabewert: dict

Beispiel: &#8470;bergabewert: "buchstaben_zahlen.txt" Inhalt von "buchstaben_zahlen.txt": a,14 x,18 t,46 u,5 j,106 Rueckgabewert {'a': 14, 'x': 18, 'j': 106, 'u': 5, 't': 46}

ali ±0

kann jemand die Antwort von der frage in python Bitte??? Gehen Sie von einer Textdatei mit einigen Reihen von Integerzahlen, die folgendermassen getrennt sind. 1;2 2;3 3;4 Jede Zeile hat zwei Integerzahlen, die durch ';' getrennt sind. Schreiben Sie eine Funktion numQuad(), die diese Datei einliest, diese modifiziert und in eine neue Datei folgenden Output schreibt 1;4 2;9 3;16 Dabei wird die 2. Spalte quadriert und die 1. Spalte bleibt unverändert. numQuad akzeptiert den Namen der Eingabedatei als Parameter.

Maximilian +1

def numQuad(a,b):

fobj=open(a,&quot;r&quot;)
woerter = {}

for line in fobj:
    line = line.strip()
    zuordnung = line.split(&quot;;&quot;)
    woerter[zuordnung[0]] = int(zuordnung[1])
   
for i in woerter:
    woerter[i]=woerter[i]**2
    
outp=open(b,&quot;w&quot;)
for i in woerter:
    outp.write(i+&quot;;&quot;+str(woerter[i])+&quot;\n&quot;)
    
outp.close()    
fobj.close()

numQuad("1.txt","2.txt")

ali ±0

An die zweite Programmier-Aufgabe kann ich mich auch ungefähr erinnern: Schreiben Sie eine Funktion readwrite(ein, aus) Parameter : ein - Name der Eingabedatei aus - Name der Ausgabedatei Rueckgabewert - None

Die Funktion zählt, wieviele Buchstaben ein Wort (jeweils eins pro Zeile) hat und gibt diese Zahlen dann zeilenweise aus.

(Zb: Wien Villach Eisenstadt gibt aus: 4 7 10) dass kann jemand bitte hochladen ??

ali ±0

def reader(ein,aus): fobj=open(ein,'r') ausgabe=open(aus,'w') liste=[] count=0 for line in fobj: liner=line.strip() liste.append(liner) for letter in liner: count+=1 ausgabe.write(liner+' '+':'+' '+str(count)+'\n') fobj.close() ausgabe.close() if name=='main': reader('scs10.txt','scs11.txt')

ali ±0

das kannst du auch ?? So ungefähr war eine Aufgabe: Erstellen Sie eine Klasse Getraenke. Im Konstruktor sollen Name des Getränks und Menge in ml übergeben werden. Überlagern Sie den print Operator - ausgegeben werden soll zb "Ich bin ein Bier und habe 500 ml. Schreiben Sie außerdem eine Funktion trinken(x). Ausgegeben werden soll: "Vom Getränk Bier wurden 10 ml getrunken." Sollte das Bier ausgetrunken worden sein, soll ausgegeben werden "Das Bier wurde ausgetrunken"

ali +1

Erstellen Sie eine Klasse 'Bruch' zum Bruchrechnen. In einem Hauptprogramm koennte dies folgendermaßen aussehen:

bruch1 = Bruch(2,3) bruch2 = Bruch(4,5) bruchMul = bruch1.mal(bruch2) print bruchMul # Ausgabe: Bruch : 8/15 bruchMul2 = bruch1*bruch2 print bruchMul2 # Ausgabe: Bruch : 8/15

wobei bruchMul und bruchMul2 Objekte vom Typ Bruch sind. Z.B. bruch1 = Bruch(2,3) initializiert ein Bruch Objekt fuer einen Bruchwert 2/3 und print bruch1 gibt auf der Konsole 'Bruch : 2/3' aus. Die Zaehler und Nenner sollen private Attributen sein, die nur mittels getter Methoden (get_z, get_n) und setter Methoden (set_n, set_n) manipuliert werden duerfen. Testen Sie das obige Beispiel im Hauptprogramm.

Gehen Sie von einer Textdatei mit einigen Reihen von Integerzahlen, die folgendermassen getrennt sind.

1;2 2;3 3;4

Jede Zeile hat zwei Integerzahlen, die durch ';' getrennt sind.

Schreiben Sie eine Funktion numQuad(), die diese Datei einliest, diese modifiziert und in eine neue Datei folgenden Output schreibt

1;4 2;9 3;16

Dabei wird die 2. Spalte quadriert und die 1. Spalte bleibt unverändert.
numQuad akzeptiert den Namen der Eingabedatei als Parameter.

(Erstellen Sie die Eingabedatei fuer Ihre Tests selber) 1. Erstellen Sie eine Klasse 'Flugzeug' mit den folgenden Attributen:

  • Flugzeugmodell (string)
  • Geschwindigkeit (in km/Stunde) Geben Sie diese Flugzeugdaten mit 'print' aus (Ueberladung).

Die Klasse hat eine Methode distanz(), die als Parameter die Flugdauer (in Stunden) bekommt und die zurueckgelegte Wegstrecke in diesem Zeitraum zurueckgibt (in km).

Im Hauptprogramm koennte dies wie folgt aussehen

fz = Flugzeug("A300", 600) print fz # Ausgabe: Flugzeug A300 - Geschwindigkeit 600 km/h print fz.distanz(3) # Ausgabe: 1800 print fz.distanz(6) # Ausgabe: 3600 print fz.distanz(2) # Ausgabe: 1200

Dabei sind 3, 6, und 2 die Flugzeiten welche das Flugzeug hintereinander geflogen ist.

Danach implementieren Sie noch eine Methode 'checkService', die ueberprueft, ob die Gesamtflugzeit 10 Stunden ueberschritten hat. Diese Methode gibt eine bool Variable zurueck. Erweitern Sie die 'distanz' Methode entsprechend so, dass "Wartung faellig" auf der Konsole ausgegeben wird, wenn die Gesamtflugzeit von 10 Stunden ueberschritten ist. Testen Sie das obige Beispiel im Hauptprogramm.

Schreiben Sie eine Funktion readwrite(ein, aus) Parameter : ein - Name der Eingabedatei aus - Name der Ausgabedatei Rueckgabewert - None Die Funktion fasst aus der Textdatei jeweils die 3 zusammengehoerenden Zeilen (Vorname, Nachname, Geburtsjahr) zu einer Zeile zusammen und schreibt diese in ein die Ausgabedatei.

Inhalt der Eingabedatei:

Isaac Newton 1642 Albert Einstein 1879 Nikola Tesla 1856

Inhalt der Ausgabedatei:

Isaac Newton 1642 Albert Einstein 1879 Nikola Tesla 1856

(Erstellen Sie die Eingabedatei fuer Ihre Tests selber) Loesung Hochladen Datei?

Erstellen Sie eine Klasse 'Mensch' mit einem Attribut 'Name', welcher nur mittels Konstruktor initialisiert wird. Weiters verfuegt die Klasse ueber eine Methode 'begruessung', die beim Aufruf folgenden String zurueckgibt: "Hallo, mein Name ist ...", wobei ... der im Attribut 'Name' enthaltene String sein sollte.

Definieren Sie eine Klasse 'Student', die von der Klasse 'Mensch' vererbt wird. Diese Klasse hat ein weiteres Attribut, "Matrikelnummer" vom Typ String, das nur mittels Konstruktor initialisiert wird. Der Konstruktor dieser Klasse akzeptiert sowohl einen Namen als auch eine Matrikelnummer. Ueberlagern Sie die Methode Begruessung von der Basisklasse so, dass ein Objekt vom Typ Student, beim Aufruf dieser Methode 1.) den Rueckgabewert der Basisklassenmethode 'begruessung' sowie 2.) einen String "Meine Matrikelnummer ist ... " zurueckgibt.

Im Hauptprogramm koennte dies wie folgt aussehen: M = Mensch('Markus') print M.begruessung() # Ausgabe:Hallo, mein Name ist Markus.

S = Student('Markus', 'e13245')
print S.begruessung() 
# Ausgabe:Hallo, mein Name ist Markus. Meine Matrikelnummer ist e13245.

Erzeugen Sie eine Textdatei mit einigen Zeilen z.B. wie folgend

Morgen wird es ein Gewitter geben. Wo ist die Bushaltestelle? Danke fuer deinen netten Brief.

Lesen sie diese Datei ein und zaehlen Sie die Woerter pro Zeile. Schreiben Sie eine neue Textdatei mit der Anzahl der Woerter und die Information, ob die Zeile mit einem Punkt endet, wie folgend.

6 ja 4 nein 5 ja

(Erstellen Sie die Eingabedatei fuer Ihre Tests selber)