Seite 1 von 2

Verfasst: Samstag 23. Februar 2008, 14:00
von BlackJack
Mir geht's ähnlich. Ich weiss, dass ich damals Notizen gemacht habe, aber auf welchem Rechner oder Backup-Medium die nun abgeblieben sind… :-)

Edit:
@SchneiderWeisse: In dem Bild ist etwas das nach Daten aussieht. Die kann man lesen wenn man herausfindet wie die Informationen zu deuten sind. Die `Python Imaging Library` (PIL) könnte hier nützlich sein.

Verfasst: Samstag 23. Februar 2008, 14:16
von schlangenbeschwörer
Ja, PIL hilft!
Und wo wir grad dabei sind, weiß einer was bei Level 12 zu tun ist? Hab zwar ein paar Unterseiten gefunden, aber bin trotzdem nicht weiter gekommen. Ist auch schon wieder etwas her...Irgendwann machts nämlich keinen Spaß mehr. :(

Verfasst: Samstag 23. Februar 2008, 14:23
von numerix
Ich hänge gerade an Level 7, its in the air. look at the letters.
Das ist noch nicht Level 7, sondern das Ende von Level 6.
Die "letters" beziehen sich auf den Namen der HTML-Datei, die dir den Text ausgespuckt hat, den du oben zitiert hast - das war ja als "Lösungswort" bei Level 6 herausgekommen. Du musst ein bisschen mit den Buchstaben spielen, dann kommt was raus, was ungefähr so klingt wie das, wonach gesucht ist ...
BlackJack hat geschrieben:In dem Bild ist etwas das nach Daten aussieht. Die kann man lesen wenn man herausfindet wie die Informationen zu deuten sind. Die `Python Imaging Library` (PIL) könnte hier nützlich sein.
Soweit ist er noch nicht. Das Bild sieht er erst, wenn er das Rätsel oben gelöst hat. Dann braucht er die PIL.

Verfasst: Samstag 23. Februar 2008, 15:09
von BlackJack
Hm tja ist schon lange her. Ich hatte hier halt noch ein Bild auf der Platte liegen und da steht oben links die Levelnummer 7, darum dachte ich das wäre schon gemeint. :-)

Verfasst: Samstag 23. Februar 2008, 16:58
von nemomuk
Ah, das war ja kagge...

In diesen großen Buchstaben vom letzten Ergebnis waren die neuen auch schon wieder drin...

Danke!

Hat jemand eine Ahnung warum das hier in der IDLE funktioniert, aber in der normalen Kommandozeile nicht?

Code: Alles auswählen

import zipfile
import re
stri = ""
zahl = "90052"
zip_datei = zipfile.ZipFile("C:\Data\Pythonchallenge\channel.zip")
datei_anzahl = len(zip_datei.namelist()) - 1 							#minus Readme.txt
print datei_anzahl
for one in range(datei_anzahl):
	code = zip_datei.read("%s.txt" %zahl) 								#Dateiinhalt
	stri += zip_datei.getinfo("%s.txt" %zahl).comment 					#Banner
	a = re.compile(r"([0-9]+)") 										#nächste Datei
	results = re.findall(a,code)										#nächste Datei
	for two in results:
		zahl = two
	print zahl

print stri
ende = raw_input()
//Und über Verbesserungsvorschläge bin ich natürlich froh...^^

@BlackJack und Leonidas: Wenn euch das was hilft, kann ich euch die Lösung von Level 0 bis Level 7 schicken, habe alles mitdokumentiert.

Verfasst: Samstag 23. Februar 2008, 19:33
von BlackJack
``zahl = results[-1]`` um auf den letzten Match zuzugreifen ist vielleicht etwas direkter und eleganter als die Schleife in den Zeilen 13-14.

Verfasst: Sonntag 24. Februar 2008, 15:00
von numerix
schlangenbeschwörer hat geschrieben:Ja, PIL hilft!
Und wo wir grad dabei sind, weiß einer was bei Level 12 zu tun ist?
Ja.

Verfasst: Sonntag 24. Februar 2008, 15:36
von nemomuk

Code: Alles auswählen

import zipfile
import re
stri = ""
zahl = "90052"
zip_datei = zipfile.ZipFile("C:\Data\Pythonchallenge\channel.zip")
datei_anzahl = len(zip_datei.namelist()) - 1 							#minus Readme.txt
print datei_anzahl
for one in range(datei_anzahl):
	code = zip_datei.read("%s.txt" %zahl) 								#Dateiinhalt
	stri += zip_datei.getinfo("%s.txt" %zahl).comment 					#Banner
	a = re.compile(r"([0-9]+)") 										#nächste Datei
	results = re.findall(a,code)										#nächste Datei
	for two in results:
		zahl = two
	print zahl

print stri
ende = raw_input()
In diesem Fall ist for two in results: zahl = two aber besser, da bei der letzten Zahl kein Inhalt mehr da ist und somit nicht mehr per -1 darauf zugegriffen werden kann-...

Mich würde viel mehr interessieren warum das Programm hier in der IDLE funktioniert, aber nicht in der Windows Eingabeaufforderung...

Jemand eine Idee?

Danke!

Verfasst: Sonntag 24. Februar 2008, 16:08
von BlackJack
Na dann prüft man halt ob es Treffer gab, oder nicht bevor man drauf zu greift, oder benutzt den `IndexError` gleich als Abbruch für die Schleife.

Was heisst "nicht funktionieren" denn genau? Explodiert der Rechner?

Verfasst: Sonntag 24. Februar 2008, 16:10
von nemomuk
Ich mach einen doppelklick, die Eingabeaufforderung öffnet sich und schließt sich auch gleich wieder...

Verfasst: Sonntag 24. Februar 2008, 16:19
von BlackJack
Dann lass doch erstmal den Doppelklick weg und starte es direkt in der Eingabeaufforderung.

Mit dem `IndexError` als "Abbruchbedingung":

Code: Alles auswählen

import re
import sys
import zipfile


archive = zipfile.ZipFile('channel.zip')
try:
    number = '90052'
    while True:
        filename = number + '.txt'
        sys.stdout.write(archive.getinfo(filename).comment)
        number = re.findall('([0-9]+)', archive.read(filename))[-1]
except IndexError:
    pass

Verfasst: Sonntag 24. Februar 2008, 16:33
von Leonidas
SchneiderWeisse hat geschrieben:Ich mach einen doppelklick, die Eingabeaufforderung öffnet sich und schließt sich auch gleich wieder...
Die Lösung steht seit Jahren in unseren FAQ.

Verfasst: Sonntag 24. Februar 2008, 17:27
von nemomuk

Code: Alles auswählen

  File "level6.py", line 11
SyntaxError: Non-ASCII character '\xe4' in file level6.py on line 11, but
oding declared; see http://www.python.org/peps/pep-0263.html for details
Was mir nicht besonders viel sagt...

Was ist hier das Problem?

Vielen Dank!

Verfasst: Sonntag 24. Februar 2008, 17:39
von nemomuk
also ich bedanke mich recht herzlich für die Hilfe!!!

Besonders das letzte Beispiel von BlackJack hat mir sehr weitergeholfen und mir einen Einblick gegeben, wie man klarer und kürzer programmieren kann.

Vielen Dank!

Code: Alles auswählen

import zipfile
import re
import sys

zip_datei = zipfile.ZipFile("C:\Data\Pythonchallenge\channel.zip")
try:
	zahl = "90052"
	while True:
		file_name = zahl + ".txt"
		sys.stdout.write(zip_datei.getinfo(file_name).comment)
		zahl = re.findall(r"([0-9]+)",zip_datei.read(file_name))[-1]
except IndexError:
	pass
ende = raw_input()
So funktioniert es, nur verstehe ich nicht warum er mir bei der anderen Version diese Fehlermeldung ausgibt...

Verfasst: Sonntag 24. Februar 2008, 17:42
von Leonidas
SchneiderWeisse hat geschrieben:Was mir nicht besonders viel sagt...

Was ist hier das Problem?
Du musst das Encoding angeben, also etwa ``# -*- coding: utf-8 -*-`` oben im Skript.

Verfasst: Sonntag 24. Februar 2008, 17:47
von nemomuk
ah ok!

Vielen Dank!