nochmal zum Ablauf glaube da sind wir nicht ganz auf einer ebene wenn ich es bei mir teste funktioniert es
Kommission : Peter
Rekla : ja
Grund : Peter, Front
das gleiche ohne rekla:
Kommission : Peter
Rekla : fsdfgw
und der reklatag mit rekla:
Kommission : rekla
Kommissionen : Jugo, Hauser, Pfaffel
Rekla : ja
Grund : Jugo, Front; Pfaffel, Schubkasten
und der reklatag ohne rekla
Kommission : rekla
Kommissionen : Jugo, Hauser, Pfaffel
Rekla :
das sind doch alle Möglichkeiten die mein skript ausführen muss und es funktioniert doch auch
habe es 4 mal getestet alle texte und Dateien werden richtig erstellt..verstehe dein problem nicht
Hier wird klar, dass kommission == 'rekla' bedingt, dass rekla == 'ja' ist, weil sonst grund leer wäre. Diese Bedingung hast Du aber nirgends erzwungen. Ob das Gegenteil auch zwingend ist, habe ich aber noch immer nicht herausgefunden.
was meinst du mit 'ob das Gegenteil auch zwingend ist..' habe oben alle 4 Möglichkeiten wie das skript laufen kann vorgeführt
vielleicht klärt es sich damit. Grund ist leer sobald bei rekla nicht 'ja' angegeben wird
der Grund bezieht sich nicht nur auf den Reklatag sondern auf die neuen Reklas die man aufnimmt beim 'eintrag' hab ich den 'grund' vergessen habe das nun editiert hier mal das skipt:
Code: Alles auswählen
#!/usr/bin/env python3
import locale
import csv
import time
from datetime import datetime, timedelta
from collections import namedtuple
def main():
dic_auftraggeber = {'h':'Hofmeister', 'r':'Röck', 'b':'Binsch'}
str_auftraggeber = '/'.join(dic_auftraggeber.keys())
auftraggeber = input(f'Auftraggeber ({str_auftraggeber}) : ')
if auftraggeber in dic_auftraggeber:
auftraggeber = dic_auftraggeber[auftraggeber]
else:
print('value_error, falsche eingabe')
return
kommission = input('Kommission : ')
if kommission == 'rekla':
rekla_kommissionen = input('Kommissionen : ')
else: rekla_kommissionen = ''
ort = input('Ort : ')
chef = input('Chef : ')
rekla = input('Reklamation (ja/ ) : ')
if rekla == 'ja':
grund = input('Kommission, Begründung der Reklamationen : ')
else: grund = ''
start = input('Arbeitsbeginn : ')
ende = input('Arbeitsende : ')
pause = input('Pause : ')
locale.setlocale(locale.LC_ALL, '')
time_start = datetime.strptime(start, '%H:%M')
time_ende = datetime.strptime(ende, '%H:%M')
time_pause = parse_timedelta(pause)
if time_ende < time_start:
print('Startuhrzeit größer als Enduhrzeit')
return
time_zeit = time_ende - time_start
arbeitszeit_sekunden = (time_zeit - time_pause).total_seconds()
hours, minutes = divmod(int(arbeitszeit_sekunden) // 60, 60)
minutes = minutes / 60
format_zeit = hours + minutes
zeit = locale.format_string('%f', format_zeit)
zeit = str(zeit)[:-4]
test = input('Korrekte Eingaben? (JA) : ')
if test != 'JA': return
zeitpunkt = time.strftime('%d.%m.%Y__%H:%M:%S')
if kommission != 'rekla':
eintrag = (
f'Zeitpunkt des Eintrags: {zeitpunkt} {auftraggeber}\n'
f'Du warst heute mit {chef} in {ort} bei der Kommission {kommission}.\n'
f'Du hast um {start} Uhr angefangen und um {ende} Uhr Feierabend'
f' gemacht, dazwischen hast du {pause} Stunde(n) Pause gemacht.\n'
f'Du hast {zeit} Stunden gearbeitet\nReklamationen: {grund}\n\n'
)
else:
rekla_tag_eintrag = (
f'Zeitpunkt des Eintrags: {zeitpunkt} {auftraggeber}\n'
f'Du warst heute mit {chef} Reklamationen im {ort} erledigen.\n'
f'Du hast um {start} Uhr angefangen und um {ende} Uhr Feierabend'
f' gemacht, dazwischen hast du {pause} Stunde(n) Pause gemacht.\n'
f'Du hast {zeit} Stunden gearbeitet,'
f' du warst wieder bei Kommission {rekla_kommissionen}\n'
f'Reklamationen: {grund}\n\n'
)
if rekla == 'ja':
rekla_eintrag = (
f'Zeitpunkt des Eintrags: {zeitpunkt} {auftraggeber}\n'
f'Du warst heute mit {chef} in {ort} bei der Kommission {kommission}.\n'
f'Du hast {zeit} Stunden gearbeitet\nReklamationen: {grund}\n\n'
)
list_eintrag = [kommission, ort, zeitpunkt, zeit, pause, chef]
if kommission == 'rekla':
with open('Arbeitszeitnachweis.txt', 'a', encoding='utf-8') as file:
file.write(rekla_tag_eintrag)
else:
with open('Arbeitszeitnachweis.txt', 'a', encoding='utf-8') as file:
file.write(eintrag)
with open('Arbeitsstunden.csv', 'a', encoding='utf-8') as csv_file:
writer = csv.writer(csv_file, delimiter=';')
writer.writerow(list_eintrag)
if rekla == 'ja':
with open('Reklamationen.txt', 'a', encoding='utf-8') as file:
file.write(rekla_eintrag)
def parse_timedelta(time):
hours, minutes = map(int, time.split(':'))
if not 0 <= minutes <= 60:
raise ValueError('wrong time format')
return timedelta(seconds = (hours*60 + minutes) * 60)
if __name__ == '__main__':
main()