Hi,
ich versuche mich gerade am Grundkurs "Programmieren lernen mit Python" des Hasso-Plattner-Instituts (https://open.hpi.de).
Obwohl der Kurs zwar im Internet noch online ist, aber nicht mehr läuft und es somit auch keinen Ansprechpartner gibt, habe ich es trotzdem bereits ohne fremde Hilfe bis zur Lektion 3 von 4 geschafft.
Jetzt bin ich aber an einer Aufgabe, bei der ich ohne Hilfe nicht mehr weiter komme.
Vielleicht könnt Ihr mir helfen?
Die Aufgabe lautet wie folgt:
Auf der Rückfahrt im Bus spielen die Campteilnehmenden Stadt-Land-Fluss. Daher soll eine Funktion stadt_mit() geschrieben werden, die eine Liste mit Städtenamen übergeben bekommt, einen Buchstaben und eine Zahl (in genau dieser Reihenfolge!). Nun sollen alle Wörter dieser Liste in einer Liste zurückgegeben werden, die mit dem mitgegebenen Buchstaben beginnen und maximal so viele Zeichen haben, wie die mitgegebene Zahl angibt.
Rufe die Funktion anschließend mit den Variablen liste, buchstabe, anzahl aus der Bibliothek daten auf und gib die resultierende Liste aus.
Vorgegeben ist nur folgende Zeile:
from daten import liste, buchstabe, anzahl
Kann mir jemand einen "Schubs" geben, mit dem ich weiter kommen könnte?
Vielen Dank im Voraus.
Micha-DD
Python Grundkurs
Ja, zum einen, weil die Liste ja nicht vorgegeben ist, da sie universell eingesetzt werden soll.
Wie schreibe ich die Parameter der Funktion stadt_mit, damit die Vorgaben (gleiche Anfangsbuchstaben + max. Zeichenanzahl) erfüllt werden?
Der Anfangsbuchstabe und die max. Zeichenanzahl ist ja auch nicht vorgegeben.
Wie schreibe ich die Parameter der Funktion stadt_mit, damit die Vorgaben (gleiche Anfangsbuchstaben + max. Zeichenanzahl) erfüllt werden?
Der Anfangsbuchstabe und die max. Zeichenanzahl ist ja auch nicht vorgegeben.
Ja, ich kann jetzt natürlich heraus bekommen, welche Städte sich in der Liste befinden, wie der gewünschte Anfangsbuchstabe ist und wie groß die max. Anzahl an Buchstaben der Städte ist.
Ich kann ja abfragen, z.B.:
print(liste)
print(buchstabe)
print(anzahl)
Aber es soll doch sicher universell einsetzbar sein?
Ich kann ja abfragen, z.B.:
print(liste)
print(buchstabe)
print(anzahl)
Aber es soll doch sicher universell einsetzbar sein?
Ich habe die Variablen gefunden, aber der Weg, um die Liste zu erstellen, der nur die Städte mit gleichem Anfangsbuchstaben und gleicher Wortlänge enthält, ist mir trotzdem unklar.
['London', 'Berlin', 'Bonn', 'Budapest', 'Hamburg', 'Rom', 'Paris', 'München', 'New York', 'Bremen', 'Beijing']
B
7
Nach meiner Einschätzung dürfte nur Beijing in der Liste übrig bleiben.
Es gibt zwar 4 Städte, die mit dem Buchstaben "B" beginnen (Berlin, Budapest, Bremen, Beijing), aber nur Beijing besteht auch aus 7 Buchstaben.
['London', 'Berlin', 'Bonn', 'Budapest', 'Hamburg', 'Rom', 'Paris', 'München', 'New York', 'Bremen', 'Beijing']
B
7
Nach meiner Einschätzung dürfte nur Beijing in der Liste übrig bleiben.
Es gibt zwar 4 Städte, die mit dem Buchstaben "B" beginnen (Berlin, Budapest, Bremen, Beijing), aber nur Beijing besteht auch aus 7 Buchstaben.
- __blackjack__
- User
- Beiträge: 13079
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Micha-DD: Lies die Aufgabenstellung noch mal was die Zahl bedeutet.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
"Nun sollen alle Wörter dieser Liste in einer Liste zurückgegeben werden...maximal so viele Zeichen haben, wie die mitgegebene Zahl angibt."
Habe ich doch.
Die mitgegebene Zahl ist die 7.
Das bedeutet, in der resultierenden Liste sollen nur noch Wörter enthalten sein, die aus 7 Zeichen (= Buchstaben) bestehen.
Und sie sollen mit "B" beginnen.
Wo ist denn mein Denkfehler?
Habe ich doch.
Die mitgegebene Zahl ist die 7.
Das bedeutet, in der resultierenden Liste sollen nur noch Wörter enthalten sein, die aus 7 Zeichen (= Buchstaben) bestehen.
Und sie sollen mit "B" beginnen.
Wo ist denn mein Denkfehler?
Da steht es doch!: (fett gedruckt):
Nun sollen alle Wörter dieser Liste in einer Liste zurückgegeben werden, die mit dem mitgegebenen Buchstaben beginnen und maximal so viele Zeichen haben, wie die mitgegebene Zahl angibt.
Nun sollen alle Wörter dieser Liste in einer Liste zurückgegeben werden, die mit dem mitgegebenen Buchstaben beginnen und maximal so viele Zeichen haben, wie die mitgegebene Zahl angibt.
Man kann leider gar nicht einschätzen, was du bereits für Wissen hat. Bisher benutzt du ja nur "print".
So bleibt die grundlegende Empfehlung das Python Tutorial in der offziellen Dokumentation durchzuarbeiten.
Ansonsten steht in der Aufgabe ja bereits der Startpunkt: Schreibe ein Funktion, die Parameter entgegenimmt und etwas zurück gibt. Bereits das sieht man aber nicht. Das Benutzen von Funktionen und Datenstrukturen (in diesem Fall der Liste) sind absolute Grundlagen.
Du musst für diese Aufgabe wissen, wie man Funktionen schreibt, wie man die foor-Schleife verwendet und man mit Strings (Zeichenketten) arbeitet. Bei denen speziell , wie man prüft, ob sie mit einem bestimmten Buchstaben beginnen und wie lang sie sind.
So bleibt die grundlegende Empfehlung das Python Tutorial in der offziellen Dokumentation durchzuarbeiten.
Ansonsten steht in der Aufgabe ja bereits der Startpunkt: Schreibe ein Funktion, die Parameter entgegenimmt und etwas zurück gibt. Bereits das sieht man aber nicht. Das Benutzen von Funktionen und Datenstrukturen (in diesem Fall der Liste) sind absolute Grundlagen.
Du musst für diese Aufgabe wissen, wie man Funktionen schreibt, wie man die foor-Schleife verwendet und man mit Strings (Zeichenketten) arbeitet. Bei denen speziell , wie man prüft, ob sie mit einem bestimmten Buchstaben beginnen und wie lang sie sind.
Ich bin da noch blutiger Anfänger.
Nein, ich hatte so angefangen:
from daten import liste, buchstabe, anzahl
def stadt_mit(liste, buchstabe, anzahl):
ergebnis = liste[0] == buchstabe
return(ergebnis)
Ich wollte zunächst erst mal eine Liste zurück geben, die nur aus Wörtern besteht, die mit dem buchstaben (in dem Fall: B) beginnen. Danach wollte ich aus der resultierenden Liste eine Liste mit Namen zurückgeben, die die max. Anzahl an Zeichen (hier: 7) haben. Und schließlich wollte ich diese Liste dann wiedergeben (print).
Den letzten Satz der Aufgabe verstehe ich leider gar nicht.
Etwa so?:
stadt_mit(liste, buchstabe, anzahl)
Nein, ich hatte so angefangen:
from daten import liste, buchstabe, anzahl
def stadt_mit(liste, buchstabe, anzahl):
ergebnis = liste[0] == buchstabe
return(ergebnis)
Ich wollte zunächst erst mal eine Liste zurück geben, die nur aus Wörtern besteht, die mit dem buchstaben (in dem Fall: B) beginnen. Danach wollte ich aus der resultierenden Liste eine Liste mit Namen zurückgeben, die die max. Anzahl an Zeichen (hier: 7) haben. Und schließlich wollte ich diese Liste dann wiedergeben (print).
Den letzten Satz der Aufgabe verstehe ich leider gar nicht.
Etwa so?:
stadt_mit(liste, buchstabe, anzahl)
Wenn du etwas mit den Elementen einer Liste machen willst, musst du mit for arbeiten. Und dein Ergebnis ist ja auch wieder eine Liste. Denn es können ja nun beliebig viele Stätte das Kriterium erfüllen. Das Ergebnis ist also immer eine Liste, mit keinem oder eben auch mehreren Einträgen.
Code: Alles auswählen
def stadt_mit(names, letter, count):
ergebnis = leere liste
eine schleife über die namen in der liste names:
falls der erste Buchstabe des Namens gleich dem Buchstaben letter und
falls die Länge des Namens kleiner gleich dem Wert count:
hänge Namen an die Liste ergebnis an
gebe ergebnis liste zurück
drucke stadt_mit(liste, buchstabe, anzahl)
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Da sieht man mal wieder, wie ähnlich Python und Pseudocode manchmal sein können.
Wenn der Fragesteller das umgesetzt hat zeigen wir sicher noch die Variante mit der List Comprehension und die mit filter. Fällt jemandem noch eine andere sinnvolle Lösung ein?
Wenn der Fragesteller das umgesetzt hat zeigen wir sicher noch die Variante mit der List Comprehension und die mit filter. Fällt jemandem noch eine andere sinnvolle Lösung ein?
Hallo,
wer kann mir weiterhelfen? Wie gebe ich nur Wörter mit maximal 7 Zeichen wieder?
Bis hierher habe ich die Aufgabe 3.2.2 geschafft. LG Ellen
from daten import liste, buchstabe, anzahl
def startet_mit_buchstabe(stadt):
ergebnis = stadt[0] == buchstabe
return ergebnis
def stadt_mit(liste):
ergebnis = []
for stadt in liste:
if startet_mit_buchstabe(stadt):
ergebnis.append(stadt)
return ergebnis
print(stadt_mit(liste))
print(liste)
print(buchstabe)
print(anzahl)
wer kann mir weiterhelfen? Wie gebe ich nur Wörter mit maximal 7 Zeichen wieder?
Bis hierher habe ich die Aufgabe 3.2.2 geschafft. LG Ellen
from daten import liste, buchstabe, anzahl
def startet_mit_buchstabe(stadt):
ergebnis = stadt[0] == buchstabe
return ergebnis
def stadt_mit(liste):
ergebnis = []
for stadt in liste:
if startet_mit_buchstabe(stadt):
ergebnis.append(stadt)
return ergebnis
print(stadt_mit(liste))
print(liste)
print(buchstabe)
print(anzahl)
Hallo Ellen,
die Aufgabe lautet ja:
Die Funktion stadt_mit() soll drei Parameter haben, "die eine Liste mit Städtenamen übergeben bekommt, einen Buchstaben und eine Zahl (in genau dieser Reihenfolge!)."
Und du prüfst bisher nur auf den ersten Buchstaben, da fehlt also einfach noch die Kondition "maximal so viele Zeichen "
Die beiden Konditionen kannst du mit einem logischen "und" verknüpfen.
die Aufgabe lautet ja:
Deine Funktion startet_mit_buchstabe() ist also nicht gefordert und sie ist auch schlecht gecodet da du da eine globale Variable abfragst, ganz übel, nicht machen.Auf der Rückfahrt im Bus spielen die Campteilnehmenden Stadt-Land-Fluss. Daher soll eine Funktion stadt_mit() geschrieben werden, die eine Liste mit Städtenamen übergeben bekommt, einen Buchstaben und eine Zahl (in genau dieser Reihenfolge!). Nun sollen alle Wörter dieser Liste in einer Liste zurückgegeben werden, die mit dem mitgegebenen Buchstaben beginnen und maximal so viele Zeichen haben, wie die mitgegebene Zahl angibt.
Rufe die Funktion anschließend mit den Variablen liste, buchstabe, anzahl aus der Bibliothek daten auf und gib die resultierende Liste aus.
Die Funktion stadt_mit() soll drei Parameter haben, "die eine Liste mit Städtenamen übergeben bekommt, einen Buchstaben und eine Zahl (in genau dieser Reihenfolge!)."
Und du prüfst bisher nur auf den ersten Buchstaben, da fehlt also einfach noch die Kondition "maximal so viele Zeichen "
Die beiden Konditionen kannst du mit einem logischen "und" verknüpfen.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png