jede Stunde soll die Zahl größer werden
@A1245x: Als angehender Python-Profi (s. deine Signatur) zeigst du leider sehr wenig Interesse daran, zu verstehen, wie vergekaute Codebeispiele genau funktionieren. So wird das wohl nichts mit der Programmierkarriere...
So, Ich habs halbwegs geschafft...
Allerdings habe ich nun folgendes Problem:
Nun ist das Problem, dass das + 1 gespeichert werden soll(siehe If bereich).
Versteht ihr was ich meine?
Wie kann ich das machen?
Allerdings habe ich nun folgendes Problem:
Code: Alles auswählen
import time
TAG = 0
MONAT = 0
JAHR = 0
x = 1
y = 1
z = 1
a = 2014
b = 4
c = 12
d = 0
e = 0
f = 0
g = 0
h = 0
i = 0
A = 2014 + JAHR
B = 5 + MONAT
C = 12 + TAG
D = 0
E = 0
F = 0
G = 0
H = 0
I = 0
dztupel1 = a, b, c, d, e, f, g, h, i
damals1 = time.mktime(dztupel1)
print("Zeit 1:", time.strftime("%d.%m.%Y %H:%M:%S",
dztupel1))
dztupel2 = A, B, C, D, E, F, G, H, I
damals2 = time.mktime(dztupel2)
print("Zeit 2:", time.strftime("%d.%m.%Y %H:%M:%S",
dztupel2))
diff_sek = damals2 - damals1
diff_min = diff_sek/60
diff_std = diff_min/60
diff_tag = diff_std/24
diff_monat = diff_tag/30
diff_jahr = diff_tag/300
if diff_tag > x:
print("TAG")
TAG + 1
else:
time.sleep(0)
if diff_monat > y:
print("MONAT")
MONAT + 1
else:
time.sleep(0)
if diff_jahr > z:
print("JAHR")
JAHR + 1
else:
time.sleep(0)
print("Schließen:Eingabe")
input()
Versteht ihr was ich meine?
Wie kann ich das machen?
Bin noch Anfänger. Also bitte nicht so kompliziert erklären.
@A1245x: Der Quelltext ist äusserst schlecht. Fang bitte gar nicht erst an mit lauter einbuchstabigen Namen und durchnummerierten Namen. Einbuchstabe Namen sind in sehr begrenzen Gültigkeitsbereichen wie „list comprehensions” und Generatorausdrücken in Ordnung, oder für Zählvariablen mit ganzen Zahlen (`i`, `j`, `k`) und Koordinaten (`x`, `y`, `z`) wo die Leser so etwas aus der Mathematik kennen, aber ansonsten sollte ein Name dem Leser vermitteln was der Wert, der daran gebunden ist, bedeutet. Das ist in dem gezeigten Programm ganz sicher nicht der Fall. Und wenn man anfängt Namen mit angehängten Nummern zu versehen, dann möchte man entweder eine Datenstruktur verwenden, oft eine Liste, oder sich bessere, passendere Namen ausdenken.
Der konkrete Datentyp sollte nicht im Namen stehen. Wenn man den Typ später einmal ändert, und das kommt durchaus vor, muss man entweder an allen Stellen im Programm den oder die Namen anpassen, oder man hat irreführende Namen im Quelltext stehen.
Zum Rechnen mit Datums- und Zeitangaben weise ich jetzt einfach *noch mal* auf das `datetime`-Modul hin.
Die ganzen ``else``-Zweige machen keinen Sinn, die kann man ersatzlos streichen.
Was willst denn *eigentlich* machen, denn ich habe immer noch das Gefühl das Du das falsch angehst, wenn ich mir die Texte der Beiträge in diesem und in dem Cäsar-Verschlüsselungsthema so anschaue. Denn dann würdest Du hier versuchen einen Wert kontinuierlich aktuell zu halten während das Programm läuft, und bist auch darauf angewiesen dass das Programm wirklich kontinuierlich läuft und icht für mehr als das Zeitintervall zum Schlüssel änder ausfällt, und das obwohl man den Wert ganz einfach zu jedem Zeitpunkt *berechnen* kann.
Der konkrete Datentyp sollte nicht im Namen stehen. Wenn man den Typ später einmal ändert, und das kommt durchaus vor, muss man entweder an allen Stellen im Programm den oder die Namen anpassen, oder man hat irreführende Namen im Quelltext stehen.
Zum Rechnen mit Datums- und Zeitangaben weise ich jetzt einfach *noch mal* auf das `datetime`-Modul hin.
Die ganzen ``else``-Zweige machen keinen Sinn, die kann man ersatzlos streichen.
Was willst denn *eigentlich* machen, denn ich habe immer noch das Gefühl das Du das falsch angehst, wenn ich mir die Texte der Beiträge in diesem und in dem Cäsar-Verschlüsselungsthema so anschaue. Denn dann würdest Du hier versuchen einen Wert kontinuierlich aktuell zu halten während das Programm läuft, und bist auch darauf angewiesen dass das Programm wirklich kontinuierlich läuft und icht für mehr als das Zeitintervall zum Schlüssel änder ausfällt, und das obwohl man den Wert ganz einfach zu jedem Zeitpunkt *berechnen* kann.
@A1245x: so wie ich das verstanden habe, hast Du einen fixen Startzeitpunkt, und einen Zeitpunkt, an dem die Nachricht verschlüsselt wurde, und willst aus diesen zwei Angaben einen zeitabhängigen Schlüssel generieren:
Code: Alles auswählen
import datetime
START_DATE = datetime.datetime(2014,4,12)
def generate_key_values(current_date):
months, days = divmod((current_date - START_DATE).days, 30)
years, months = divmod(months, 360)
return years, months, days
def main():
current_date = datetime.datetime(2014,5,12)
print(generate_key_values(current_date))
if __name__ == '__main__':
main()
@Sirius3
Fast so ein Script wollt ich haben, nur dass sich das Startdatum aktualisiert.
Also Startdatum wäre heute das Datum von heute, morgen wäre es das von Datum von morgen...
Ist das Zieldatum erreicht, soll z.b. K mit 1 addiert und gespeichert werden. Bräuchte man eine externe Datei, wäre es trotzdem Ok.
Nun soll sich das Zieldatum um einen Monat verändern (2014,5,12)-->(2014,6,12)
Ich habe es versucht, allerdings bekam ich das nicht hin...
Fast so ein Script wollt ich haben, nur dass sich das Startdatum aktualisiert.
Also Startdatum wäre heute das Datum von heute, morgen wäre es das von Datum von morgen...
Ist das Zieldatum erreicht, soll z.b. K mit 1 addiert und gespeichert werden. Bräuchte man eine externe Datei, wäre es trotzdem Ok.
Nun soll sich das Zieldatum um einen Monat verändern (2014,5,12)-->(2014,6,12)
Ich habe es versucht, allerdings bekam ich das nicht hin...
Bin noch Anfänger. Also bitte nicht so kompliziert erklären.
@A1245x
So wie BlackJack schon geschrieben hat: Du solltest Dir unbedingt einmal die grundlegenden Datentypen anschauen. Dazu gehören unter anderen unbedingt Listen/Tuples und Dictonaries.
Listen oder Tuples eignen sich z. B. sehr gut, wenn man mehrere zusammengehörende Werte ablegen möchte. Anstatt Dein ``a = ... b = ... c = ...`` sieht das dann mit einer Liste so aus:Wenn Du diesen Werten dann auch noch weitere (z. B. die Zeit) anfügen möchtest, geht das sehr simpel:Einen einzelnen Wert (z. B. Sekunden):Und diese Liste kannst Du dann als Argumentbündel weiterverwenden:Im Gegensatz zur Liste/Tuple, bei der man auf die enthaltenen Werte über einen Index (beginnend beim ersten Element mit der Nummer 0) zugreift, sind die Werte innerhalb eines Dictionaries in keiner festen Reihenfolge enthalten, besitzen dafür allerdings ein Schlüsselwort (key), über das ich gezielt einen bestimmten Wert abfragen kann:Auch hier kann ich natürlich weitere Werte zufügen:Die Werte aus einem Dictionary kann ich dann ebenfalls an eine Funktion/Klasse übergeben:
Spiel damit einfach mal in einer Pythonshell und schau' Dir die Methoden, die Listen, Tuples und Dictionaries besitzen, an. Das wird Dir Dein Leben um ein vielfaches erleichtern bzw. vieles ist überhaupt erst damit möglich.
mutetella
So wie BlackJack schon geschrieben hat: Du solltest Dir unbedingt einmal die grundlegenden Datentypen anschauen. Dazu gehören unter anderen unbedingt Listen/Tuples und Dictonaries.
Listen oder Tuples eignen sich z. B. sehr gut, wenn man mehrere zusammengehörende Werte ablegen möchte. Anstatt Dein ``a = ... b = ... c = ...`` sieht das dann mit einer Liste so aus:
Code: Alles auswählen
>>> current_date = [2014, 4, 13]
>>> current_date
[2014, 4, 13]
>>> current_date[0]
2014
>>> current_date[2]
13
Code: Alles auswählen
>>> current_date.extend((16, 15))
>>> current_date
[2014, 4, 13, 16, 15]
Code: Alles auswählen
>>> current_date.append(30)
>>> current_date
[2014, 4, 13, 16, 15, 30]
Code: Alles auswählen
>>> import datetime
>>> datetime.datetime(*current_date)
datetime.datetime(2014, 4, 13, 16, 15, 30)
Code: Alles auswählen
>>> current_date = {'year': 2014, 'month': 4, 'day': 13}
>>> current_date
{'month': 4, 'day': 13, 'year': 2014}
>>> current_date['year']
2014
Code: Alles auswählen
>>> current_date['hour'] = 16
>>> current_date['minute'] = 15
>>> current_date
{'month': 4, 'minute': 15, 'day': 13, 'hour': 16, 'year': 2014}
Code: Alles auswählen
>>> datetime.datetime(**current_date)
datetime.datetime(2014, 4, 13, 16, 15)
mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit )
Ok, vielen Dank.
Allerdings ist mein derzeitiges Problem, dass Ich nicht weiss, wie Ich Variablen in einer exteren Datei abspeichere und wieder aufrufe.
Also:
Allerdings ist mein derzeitiges Problem, dass Ich nicht weiss, wie Ich Variablen in einer exteren Datei abspeichere und wieder aufrufe.
Also:
Code: Alles auswählen
K = 3 #in externer Datei
K = K + 1 #Dies abspeichern
Bin noch Anfänger. Also bitte nicht so kompliziert erklären.
"Reading and Writing Files" kommt im Tutorial in Kapitel 7. Bis wohin bist du denn schon vorgedrungen? Oder bist du schon daran vorbei und hast noch Fragen dazu?A1245x hat geschrieben:Allerdings ist mein derzeitiges Problem, dass Ich nicht weiss, wie Ich Variablen in einer exteren Datei abspeichere und wieder aufrufe.
Ich geb auf.
Ich habe alles versucht.
Ich ziehe die Frage zurück, scheint echt schwer zu sein.
Nächstes mal frage ich was einfacheres, damit ich dass auch von selbst hinbekommen kann.
Aber Vielen Dank an euch.
Ich habe alles versucht.
Ich ziehe die Frage zurück, scheint echt schwer zu sein.
Nächstes mal frage ich was einfacheres, damit ich dass auch von selbst hinbekommen kann.
Aber Vielen Dank an euch.
Bin noch Anfänger. Also bitte nicht so kompliziert erklären.
@A1245x
Ich vermute mal, dass nicht Dein Vorhaben zu schwer, sondern Deine Herangehensweise zu konfus bzw. zu ungeduldig ist. Meine Erfahrung ist immer wieder, dass man sich keinen Gefallen tut, einfach darauf los zu programmieren. Joe Armstrong (der, der die Programmiersprache Erlang geschrieben hat) schreibt in 'Coders at Work' sinngemäß:
Am Anfang meiner Programmiertätigkeit musste ich ein Programm erstmal schreiben, um herauszufinden, ob es funktioniert. Heute kann ich mir dasselbe einfach denken. Zeit spare ich mir dadurch keine, die Ausprobierphase dauerte ein Jahr, die Nachdenkphase auch, ich muss nur weniger tippen. (aus 'Weniger schlecht programmieren', O'Reilly Verlag)
Vielleicht hilft es Dir, einmal die Tastatur beiseite zu schieben und auf einem Blatt Papier zu skiziieren, wie Du Dir Dein Programm grob vorstellst, welche Features es haben soll. Dann hast Du auch gleich mal einen Überblick, welche Funktionen, Module, Frameworks etc. da zum Einsatz kommen. Und so brichst Du das ganze dann Stück für Stück herunter und beginnst dann, eine erste Anforderung zu lösen, z. B. eine Funktion, die aus einer Nutzereingabe ein `datetime.datetime` erstellt, das dann wiederum als Basis für "jede Stunde soll die Zahl größer werden" dient...
mutetella
Ich vermute mal, dass nicht Dein Vorhaben zu schwer, sondern Deine Herangehensweise zu konfus bzw. zu ungeduldig ist. Meine Erfahrung ist immer wieder, dass man sich keinen Gefallen tut, einfach darauf los zu programmieren. Joe Armstrong (der, der die Programmiersprache Erlang geschrieben hat) schreibt in 'Coders at Work' sinngemäß:
Am Anfang meiner Programmiertätigkeit musste ich ein Programm erstmal schreiben, um herauszufinden, ob es funktioniert. Heute kann ich mir dasselbe einfach denken. Zeit spare ich mir dadurch keine, die Ausprobierphase dauerte ein Jahr, die Nachdenkphase auch, ich muss nur weniger tippen. (aus 'Weniger schlecht programmieren', O'Reilly Verlag)
Vielleicht hilft es Dir, einmal die Tastatur beiseite zu schieben und auf einem Blatt Papier zu skiziieren, wie Du Dir Dein Programm grob vorstellst, welche Features es haben soll. Dann hast Du auch gleich mal einen Überblick, welche Funktionen, Module, Frameworks etc. da zum Einsatz kommen. Und so brichst Du das ganze dann Stück für Stück herunter und beginnst dann, eine erste Anforderung zu lösen, z. B. eine Funktion, die aus einer Nutzereingabe ein `datetime.datetime` erstellt, das dann wiederum als Basis für "jede Stunde soll die Zahl größer werden" dient...
mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit )