staging.inyokaproject.org

Python-Vokabeltrainer

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

kegelkugel

Avatar von kegelkugel

Anmeldungsdatum:
12. Oktober 2009

Beiträge: Zähle...

Hallo,

ich wollte mal meinen Vokabeltrainer vorstellen, den ich selber in Python geschrieben habe. Ihr findet ihr unter Downloads auf meiner Homepage: http://www.markus-reinert.de.vu/ . Er ist konsolen-basiert und verbraucht dadurch kaum CPU und RAM. Sein ursprünglicher Zweck war das tägliche Abfragen einer Vokabel vor dem Computerstart. Schaut ihn euch doch mal an!

ospubis

Avatar von ospubis

Anmeldungsdatum:
1. Mai 2010

Beiträge: Zähle...

Der Anfang ist recht gut. Hast du schon Ideen, wie du das Programm weiter entwickelst oder ist das für dich beendet?

jakon Team-Icon

Lokalisierungsteam

Anmeldungsdatum:
16. November 2009

Beiträge: 419

Hallo kegelkugel,

erst einmal: Gut gemacht. Wo du Python schon einigermaßen bis gut (man kann das ja an kleinen Programmen nicht erkennen) beherrschst, solltest du dir mal PEP 8 anschauen. Das sind Style-Guidelines die von Python aufgestellt wurden:

http://www.python.org/dev/peps/pep-0008/ (die offizielle Version)

http://wiki.python.de/PEP%208%20%28%C3%9Cbersetzung%29 (deutsche Übersetzung)

Hier mal der Code kommentiert, wo was verbessert werden könnte:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
## ich würde hier noch ein "#!/usr/bin/env python" reintun, damit falls die Datei ausführbar gemacht wurde, und mit ./dateiname.py aufgerufen wird, das Skript als Python-Programm behandelt wird. Ansonsten denkt die Bash das wäre ein Bash-Skript (und die Dash es wäre ein Dash-Skript [vielleicht]).
# -*- encoding: utf8 -*-
# Autor: Markus Reinert
# Datum: 02.05.2010
# Beschreibung: Programm zum Vokabeln abfragen
## Es ist kein einziger Kommentar vorhanden, dass sollte man ändern

import random, time ## imports sollten einzeln vorgenommen werden

vocs = {"example": "Beispiel", "This is an example.": "Das ist ein Beispiel."} ## Ich weiss hier jetzt nicht ob das alles in einer Zeile war, denn ich habe das Programm auf Windows betrachtet, und da funktionieren die Zeilenumbrüche nicht, also habe ich einfach da neue Zeilen gemacht wo sie (hoffentlich) hingehören


def abfrage():
	nochmal = "j"

	while nochmal == "j" or nochmal == "": ## ich würde eher ein "while True" nehmen, und dann unten ein
##   if nochmal == "n":
##       break
## reintun. Dann spart man sich ein bisschen Code

		anzahl = 0
		keys = vocs.keys() ## man sollte sich auf eine Sprache der Kommentare entscheiden. PEP 8 will: Englisch
		random.shuffle(keys)
		obj = vocs[keys[0]] ## "obj". Darunter kann ich mir nichts vorstellen :(
		while 1: ## Man könnte auch "while True" benutzen
			print "Deine Sprache: " + obj
			franz = raw_input("Andere Sprache: ") ## :D "franz" da ist dir wohl nichts eingefallen. Sowas sollte man vermeiden
			if (franz, obj) in vocs.items():
				print "Richtig!"
				break
			print "Falsch!"
			anzahl = anzahl + 1 ## Es gibt einen Operator (sowas wie Plus [+], Minus [-], Mal [*], und Geteilt [/]) der geht so: += Und wenn du den benutzt, kannst du schreiben: anzahl += 1  Das kann man lesen wie "anzahl gleich anzahl plus 1"
			if anzahl == 3:
				print keys[0]
				abfrage()
		nochmal = raw_input("Nochmal [j/n]? ")


print "Vokabeltrainer"
print "--------------" ## Wie wärs mit "--------------\n"? Dann kannst du das print eine Zeile drunter weglassen
print

abfrage()

## Beim print hab ich es so verändert dass ich es beim Lesen übersichtlicher find.
print """Vielen Dank für das Benutzen des Programms.
Wenn es dir gefallen hat, sag' es bitte weiter.

Weitere Informationen unter www.markus-reinert.de.vu!"
""

time.sleep(5) ## Das ist Geschmackssache.

Bei den Kommentaren habe ich aber nicht auf PEP 8 geachtet. PEP 8 sagt nämlich, dass höchstens ~75 Zeichen in einer Zeile sein dürfen. Und dementsprechend ist es jetzt bei der Kommentierung unübersichtlich.

Edit: Das "## Das ist Geschmackssache." nehm ich zurück. Ich hatte nicht daran gedacht, dass das Terminal normalerweise dann zu geht wenn es fertig ist.

kegelkugel

(Themenstarter)
Avatar von kegelkugel

Anmeldungsdatum:
12. Oktober 2009

Beiträge: Zähle...

Es freut mich, dass man hier gleich gute Tipps bekommt. Danke!!! ☺

Ich werde auf jeden Fall deine Anmerkungen anwenden. "franz" habe ich verwendet, weil ich den Vorkabeltrainer eigentlich nur für mich gemacht hatte, und ich als 2. Fremdsprache Französisch lerne 😉 . "obj" sollte "Objekt" heißen. Das mit dem Operator wusste ich damals noch nicht (jetzt weißt ich es 😉). Das sleep steht am Ende noch, damit man am Ende noch meine Adresse sieht und das Terminal Fenster nicht gleich zugeht.

Antworten |