@BlackJack
Danke erst einmal..
Kann es sein, dass dein Code für Python 2 geschrieben wurde? Ich benutze nämlich die aktuelle Version und das würde vielleicht (hoffentlich ) erklären, weshalb ich da mit einigen Sachen im Code leider nicht viel anfangen kann.
Hilfe zu einer Aufgabenstelllung
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Auch Python2.7 ist aktuell. Wahrscheinlich sind die `print`-Statements das einzige das du aendern muesstest.mariposa hat geschrieben:Ich benutze nämlich die aktuelle Version ...
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
@mariposa: Ich benutze ein aktuelles Python 2.7. Die Änderungen für Python 3 sind aber nicht schwer. Statt `itertools.izip()` ist es in 3 die eingebaute `zip()`-Funktion. Dafür muss man `reduce()` aus `functools` importieren. Und `print()` ist zur Funktion geworden. Das war's aber auch schon.
Edit: So sollte es unter Python 2.7 und 3 laufen:
Edit: So sollte es unter Python 2.7 und 3 laufen:
Code: Alles auswählen
#!/usr/bin/env python
# coding: utf8
from __future__ import print_function, unicode_literals
import io
from collections import defaultdict
from functools import partial, reduce
try:
from itertools import izip
except ImportError:
izip = zip
from operator import and_, methodcaller
sorted_caseless = partial(sorted, key=methodcaller('lower'))
def read_tokens(filenames):
for filename in filenames:
with io.open(filename, encoding='utf8') as lines:
yield set(line.strip() for line in lines)
def get_common_tokens(filenames):
return reduce(and_, read_tokens(filenames))
def create_register(filenames):
token2filenames = defaultdict(set)
for filename, tokens in izip(filenames, read_tokens(filenames)):
for token in tokens:
token2filenames[token].add(filename)
return token2filenames
def main():
filenames = ['t1.txt', 't2.txt', 't3.txt']
print('### Ausgabe zu Teilaufgabe 1 ###')
print(', '.join(sorted_caseless(get_common_tokens(filenames))))
print('\n\n### Ausgabe zu Teilaufgabe 2 ###')
register = create_register(filenames)
for token in sorted_caseless(register):
print (
'{0}: {1}'.format(
token, ' '.join(sorted_caseless(register[token]))
)
)
if __name__ == '__main__':
main()
Ja super.. läuft, danke!
Aber in der Aufgabenstellung steht, dass die Stellen, an denen "pass" steht, durch den Code ersetzen werden sollen, der ca 10 Zeilen betragen kann.. Mich würde interessieren, ob ihr in dieser Richtung noch Vorschläge hättet
Aber in der Aufgabenstellung steht, dass die Stellen, an denen "pass" steht, durch den Code ersetzen werden sollen, der ca 10 Zeilen betragen kann.. Mich würde interessieren, ob ihr in dieser Richtung noch Vorschläge hättet
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Mir kommt es so vor, dass dem nicht so ist ...BlackJack hat geschrieben:Da der Abgabetermin mittlerweile wahrscheinlich verstrichen ist, ...
@mariposa: Was ist denn dein Ansatz in der Richtung?
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
@cofi
Also zu der Abgabefrist kann ich dir leider nichts sagen, ich weiß nicht wann sie endet..
Und einen Ansatz kann ich dir nicht wirklich geben, ich versuche mich lediglich in Python reinzusteigern.. Ich dachte für so etwas sei man hier richtig..
Also zu der Abgabefrist kann ich dir leider nichts sagen, ich weiß nicht wann sie endet..
Und einen Ansatz kann ich dir nicht wirklich geben, ich versuche mich lediglich in Python reinzusteigern.. Ich dachte für so etwas sei man hier richtig..
-
- User
- Beiträge: 2
- Registriert: Mittwoch 18. September 2013, 12:23
Der Kursleiter bedankt sich...kbr hat geschrieben:Didaktisch finde ich die Aufgabe ganz gut gelungen.
Ansonsten bin ich enttäuscht, wie mit dieser Frage umgegangen wurde. Es ging ganz offen um eine Aufgabenstellung. Aus anderen Foren kenne ich da deutlich mehr Zurückhaltung hinsichtlich der Bereitschaft, komplette Lösungen zu liefern. Geholfen wurde damit niemandem.
@der Kursleiter: Jemand der eine der Lösungen abgibt *kann* schon Python oder es sollte dem Dozenten/Tutor auffallen dass es eine Diskrepanz zwischen können und verwendeten Sprachkonstrukten und Klassen gibt. Spätestens wenn man sich den Code von jemandem erklären lässt der das einfach nur übernommen hat, sollte es auffallen. Ich habe jedenfalls keine Lösung geliefert die ein Programmier- oder Python-Anfänger mal eben so selbstständig aus dem Ärmel schüttelt.
@der Kursleiter: Aufgaben sollten ja auch nie nur der Lösung willen gestellt werden, sondern um daran etwas zu lernen. Spätestens ein Oberstufenschüler sollte sich dessen bewußt sein. Hier im Forum werden sehr oft „Musterlösungen“ präsentiert, die musterhaft eine ganze Klasse von Problemen lösen können, wenn sie verstanden werden.
-
- User
- Beiträge: 2
- Registriert: Mittwoch 18. September 2013, 12:23
Das stimmt. Aber dass das bloße Kopieren einer solchen Lösung wahrscheinlich auffällt, ist nur ein Aspekt. Denn:BlackJack hat geschrieben:Ich habe jedenfalls keine Lösung geliefert die ein Programmier- oder Python-Anfänger mal eben so selbstständig aus dem Ärmel schüttelt.
Komplette Lösungen abzuliefern, bevor die OP auch nur den kleinsten eigenen Ansatz liefert, ist keine gute Lernhilfe.Sirius3 hat geschrieben:Aufgaben sollten ja auch nie nur der Lösung willen gestellt werden, sondern um daran etwas zu lernen.