Hallo,
ich habe als Hausaufgabe ein Python-Programm zu schreiben und mich
dabei aufgeraucht, ich komme zu keiner Lösung.
Die Aufgabe lautet:
1. Eine Zeichenkette wird übergeben (z.B. "Auto"), geliefert
wird die Zeichenkette (zk) mit einem Leerzeichen
dazwischen (also: "A u t o"). Schreibe eine Prozedur!
2. Schreibe eine Prozedur "umgedreht", die zk wird in
umgedrehter Reihenfolge zurückgeliefert, also "otuA"!
Kann mir jemand helfen? Es wäre sehr nett!!
Danke im Voraus!
python programmierung
-
- User
- Beiträge: 14
- Registriert: Dienstag 9. November 2004, 20:56
- Wohnort: Berlin
-
- User
- Beiträge: 14
- Registriert: Dienstag 9. November 2004, 20:56
- Wohnort: Berlin
Ja, kann verstehen, dass das nervt.
Mein Problem ist:
Ich weiß nicht, wie ich aus einem string die einzelnen Zeichen
herausbekomme. Ich bin ein absoluter Anfänger, der Kurs
läuft erst seit gut 3 Monaten.
Wenn ich wüsste, wie ich aus einem string jeden einzelnen
character herausbekomme, würde ich versuchen, sie einzeln
per print-Anweisung zu liefern und jeweils ein Leerzeichen
anzuhängen. Ist das der richtige Weg?
Mir würde ein guter Tipp reichen, muss ja nicht gleich
das ganze Programm sein!
Danke!!
Mein Problem ist:
Ich weiß nicht, wie ich aus einem string die einzelnen Zeichen
herausbekomme. Ich bin ein absoluter Anfänger, der Kurs
läuft erst seit gut 3 Monaten.
Wenn ich wüsste, wie ich aus einem string jeden einzelnen
character herausbekomme, würde ich versuchen, sie einzeln
per print-Anweisung zu liefern und jeweils ein Leerzeichen
anzuhängen. Ist das der richtige Weg?
Mir würde ein guter Tipp reichen, muss ja nicht gleich
das ganze Programm sein!
Danke!!
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Hi!
Du kannst über einen String wie über eine Liste iterieren:

Gruß, mawe
Du kannst über einen String wie über eine Liste iterieren:
Code: Alles auswählen
for char in string:
# mach irgendwas mit char
Es ist ein WegKranioklast hat geschrieben: Ist das der richtige Weg?

Gruß, mawe
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi Kranioklast,
Beide Probleme sind mit einigem Pythonwissen in je einer Programmzeile zu erledigen. Mit wenig Pythonwissen in je vier und mit garkeinem in maximal sechs, sofern man die Grundlagen der Programmierung kennt und schoneinmal ein Basicprogramm geschrieben hat.
Zu Problem 1:
Also du hast eine Zeichenkette z.B. "Auto", jetzt überlege dir wie du die in einzelne Zeichen zerlegen kannst dann hast du z.B. eine Liste ["A", "u", "t", "o"] jetzt brauchst du eigentlich nur noch die Liste wieder zu eine Zeichenkette zusammenzufügen mit je einem " " dazwischen. (tipp: Stringmethoden und spiel da mal mit der Methode join).
Zu Problem 2:
schau dir mal Strings an, da wird gezeigt wie mit Strings im Allgemeinen gearbeitet wird und auch wie auf einzelne Elemente eines Strings zugegriffen werden kann.
Gruß
Dookie
Gruß
Dookie
Beide Probleme sind mit einigem Pythonwissen in je einer Programmzeile zu erledigen. Mit wenig Pythonwissen in je vier und mit garkeinem in maximal sechs, sofern man die Grundlagen der Programmierung kennt und schoneinmal ein Basicprogramm geschrieben hat.
Zu Problem 1:
Also du hast eine Zeichenkette z.B. "Auto", jetzt überlege dir wie du die in einzelne Zeichen zerlegen kannst dann hast du z.B. eine Liste ["A", "u", "t", "o"] jetzt brauchst du eigentlich nur noch die Liste wieder zu eine Zeichenkette zusammenzufügen mit je einem " " dazwischen. (tipp: Stringmethoden und spiel da mal mit der Methode join).
Zu Problem 2:
schau dir mal Strings an, da wird gezeigt wie mit Strings im Allgemeinen gearbeitet wird und auch wie auf einzelne Elemente eines Strings zugegriffen werden kann.
Gruß
Dookie
Gruß
Dookie
[code]#!/usr/bin/env python
import this[/code]
import this[/code]
Ok, danke, Problem 1 habe ich hinbekommen.
zk= 'Affe'
def gesperrt(zk):
"""\
Voraussetzung: "zk" ist eine Zeichenkette.
Effekt: Eine neue Zeichenkette ist geliefert, die den Text
von "zk" enthaelt, jedoch steht zwischen zwei Zeichen
ein Leerzeichen. Beispiel: Wenn der Text
"Affe" uebergeben wurde, so ist "A f f e" geliefert.
"""
for char in zk:
print char+' ',
gesperrt(zk)
Problem 2 ist mir noch nicht klar.
Bei "join" bekomme ich die Fehlermeldung, dass dieser
Name nicht definiert ist.
Leider ist mein Englisch nicht so gut, dass ich alles
in den Anweisungen verstehen konnte.
Ich probiere noch ein bisschen rum...
Danke für die Hilfe bisher.
zk= 'Affe'
def gesperrt(zk):
"""\
Voraussetzung: "zk" ist eine Zeichenkette.
Effekt: Eine neue Zeichenkette ist geliefert, die den Text
von "zk" enthaelt, jedoch steht zwischen zwei Zeichen
ein Leerzeichen. Beispiel: Wenn der Text
"Affe" uebergeben wurde, so ist "A f f e" geliefert.
"""
for char in zk:
print char+' ',
gesperrt(zk)
Problem 2 ist mir noch nicht klar.
Bei "join" bekomme ich die Fehlermeldung, dass dieser
Name nicht definiert ist.
Leider ist mein Englisch nicht so gut, dass ich alles
in den Anweisungen verstehen konnte.
Ich probiere noch ein bisschen rum...
Danke für die Hilfe bisher.
-
- User
- Beiträge: 14
- Registriert: Dienstag 9. November 2004, 20:56
- Wohnort: Berlin
Gast war ich



-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi nochmal.
es war ja die Rede von Zeichenkette zurückgeben, nicht ausgeben.
Das kannst Du so erreichen
Die Methode zum Umdrehen kannst Du aus der Gesperrtmethode entwickeln, dazu brauchst du nur eine Zeile zu ändern. Denk daran, du brauchst nur ein anderes Resultat "result".
Gruß
Dookie
es war ja die Rede von Zeichenkette zurückgeben, nicht ausgeben.
Das kannst Du so erreichen
Code: Alles auswählen
zk= 'Affe'
def gesperrt(zk):
"""
Voraussetzung: "zk" ist eine Zeichenkette.
Effekt: Eine neue Zeichenkette ist geliefert, die den Text
von "zk" enthaelt, jedoch steht zwischen zwei Zeichen
ein Leerzeichen. Beispiel: Wenn der Text
"Affe" uebergeben wurde, so ist "A f f e" geliefert.
"""
result = ""
for char in zk:
result = result+char+' '
return result
print gesperrt(zk)
Gruß
Dookie
Zuletzt geändert von Dookie am Mittwoch 10. November 2004, 00:02, insgesamt 1-mal geändert.
[code]#!/usr/bin/env python
import this[/code]
import this[/code]
Wenn ich es so eingebe, bekomme ich die Fehlermeldung:
Traceback (most recent call last):
File "C:/python/gesperrt1.py", line 15, in -toplevel-
print gesperrt(zk)
File "C:/python/gesperrt1.py", line 12, in gesperrt
result = result+char+' ',
TypeError: can only concatenate tuple (not "str") to tuple
Mir qualmt der Kopf, ich probiere es morgen weiter...
Vielen Dank für die Hilfe!
Traceback (most recent call last):
File "C:/python/gesperrt1.py", line 15, in -toplevel-
print gesperrt(zk)
File "C:/python/gesperrt1.py", line 12, in gesperrt
result = result+char+' ',
TypeError: can only concatenate tuple (not "str") to tuple
Mir qualmt der Kopf, ich probiere es morgen weiter...
Vielen Dank für die Hilfe!

Vielen Dank noch mal, ich hab das zweite Problem
jetzt auch hinbekommen, und zwar so:
Geht sicherlich auch eleganter, aber immerhin läufts.
Die Hinweise über den Umgang mit strings waren sehr hilfreich.
jetzt auch hinbekommen, und zwar so:
Code: Alles auswählen
zk= 'Affe'
laenge=len(zk)
def back(zk):
global laenge
for x in range(laenge):
laenge=laenge-1
print zk[laenge],
back(zk)
Die Hinweise über den Umgang mit strings waren sehr hilfreich.
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Hi!
Hausaufgabe ist Hausaufgabe, egal ob Schüler od. Student
Naja, jetzt wo Du selbst auf eine Lösung gekommen bist, hier noch eine für das erste Problem (als Inspiration
):
Gruß, mawe
Hausaufgabe ist Hausaufgabe, egal ob Schüler od. Student

Naja, jetzt wo Du selbst auf eine Lösung gekommen bist, hier noch eine für das erste Problem (als Inspiration

Code: Alles auswählen
zk = "Affe"
print " ".join(list(zk))
-
- User
- Beiträge: 9
- Registriert: Mittwoch 7. Januar 2004, 16:36
Hi!
Ich wiederhole Dookie: Zurückgeben ist nicht ausgeben, also nicht mit print ausspucken, sondern eine Prozedur schreiben, die mit return das gewünschte zurückliefert. Wie in Dookies Beispiel. Statt die Zeichen auszugeben, speichere sie in einer Variablen. Ich denke mal, das war auch in Eurer Aufgabe gefordert.
Außerdem ein Tipp zu Deiner geposteten Lösung: Warum machst Du len(zk) außerhalb der Prozedur? Mach es innerhalb der Prozedur, dann sparst Du Dir das global und kannst die Prozedur später auch auf andere Zeichenketten anwenden, ohne immer wieder vorher noch die Länge der Zeichenkette zu bestimmen!
Gruß,
Michael
Ich wiederhole Dookie: Zurückgeben ist nicht ausgeben, also nicht mit print ausspucken, sondern eine Prozedur schreiben, die mit return das gewünschte zurückliefert. Wie in Dookies Beispiel. Statt die Zeichen auszugeben, speichere sie in einer Variablen. Ich denke mal, das war auch in Eurer Aufgabe gefordert.
Außerdem ein Tipp zu Deiner geposteten Lösung: Warum machst Du len(zk) außerhalb der Prozedur? Mach es innerhalb der Prozedur, dann sparst Du Dir das global und kannst die Prozedur später auch auf andere Zeichenketten anwenden, ohne immer wieder vorher noch die Länge der Zeichenkette zu bestimmen!
Gruß,
Michael
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi mave,
warum erst in eine Liste wandeln?
@Kranioklast:
zum 2. Problem
Bei Python sind die Batterien eben schon dabei und für viele Probleme gibt es einfache/kurze Lösungen. Wobei deine Hausaufgabe nicht umsonst ist. Intern machen die beiden einzeiler das selbe wie Deine Funktionen.
Gruß
Dookie
warum erst in eine Liste wandeln?
Code: Alles auswählen
zk = "Affe"
gesperrt = " ".join(zk)
print gesperrt
zum 2. Problem
Code: Alles auswählen
zk = "Affe"
gedreht = zk[::-1]
print gedreht
Gruß
Dookie
[code]#!/usr/bin/env python
import this[/code]
import this[/code]
-
- User
- Beiträge: 14
- Registriert: Dienstag 9. November 2004, 20:56
- Wohnort: Berlin
Ja, Hausaufgaben sind Hausaufgaben, hast ja Recht.
Danke für die Alternativen!
Danke für die Alternativen!