Datum / Uhrzeit - Generierung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
gerald123
User
Beiträge: 36
Registriert: Donnerstag 10. September 2015, 12:10

Hey, ich muss für Input-File (Simulationsprogramm) folgendes Zeitformat generieren: Monat/Tag/Stunde/Minute. in einer 10min Auflösung: Bsp. 1,1,1,10 (=1.Jänner um 00:10).

Code: Alles auswählen

import numpy as np
size = (2190,4)
epw = np.zeros(size)
k = 0 # Zählt Schritte
Monat = 0
Tag = 0

Jahr= [31,28,31,30,31,30,31,31,30,31,30,31]
for Monat in Jahr:
    for Tage in Monat:
        for Stunde in range(1,25):
            for Minute in range(1,7):
                epw[k,0] = Monat
                epw[k,1] = Tag
                epw[k,2] = Stunde
                epw[k,3] = Minute*10
                k=k+1
Funktioniert leider so nicht "'int' object is not iterable".
Meine Frage: Ist diese Methode so grundsätzlich geeignet? Wenn ja, habt ihr eine Idee, wie ich den Fehler "'int' object is not iterable" beheben kann?

Danke und beste Grüße
Zuletzt geändert von Anonymous am Samstag 28. November 2015, 14:41, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
BlackJack

@gerald123: Das ist *so* simpel und offensichtlich das Du da selber drauf kommen solltest. Die nötigen Grundlagen kennst Du ganz offensichtlich, denn alles was Du brauchst steht im Grunde schon da.

Überleg doch mal was in der Fehlerzeile für konkrete Werte stehen wenn die ausgeführt wird.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

@gerald123
Du iterierst über die Elemente von Jahr und die sind bei dir Zahlen. Das heißt: An `Monat` wird ein Zahlwert gebunden. Über diesen jeweiligen Zahlwert läuft nun eine weitere Iteration für `Tage`. Das führt aber zum Fehler, weil über Zahlen nicht iteriert werden kann. Mit anderen Worten: Du hast eine Schleife zuviel für deine Datenstruktur eingebaut.
BlackJack

@snafu: Da ist keine Schleife zu viel. Dich verwirrt eventuell die Namensgebung, denn `Jahr` müsste eigentlich `monate` heissen (oder `tage_pro_monat`) und `Tage` müsste `tag` heissen (heisst im innersten Schleifenkörper dann ja auch ”fälschlicherweise” `Tag`).
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@gerald123: Für Datumsberechnungen gibt es das datetime-Modul:

Code: Alles auswählen

import numpy as np
size = (2190, 4)
epw = np.zeros(size)
start = datetime.datetime(2016,1,1)
for k in range(epw.shape[1]):
    epw[k, :] = (start + datetime.timedelta(seconds=600*k)).timetuple()[1:5]
Antworten