Python :: Aufgabe #42
2 Lösungen

Bei Addition von Tage nur Werktage beachten
Anfänger - Python
von Gustl
- 22.07.2013 um 11:04 Uhr
Schreibe ein Programm welches die Anzahl der addierenden Tage abfrägt und dann das Datum ausgibt.
Bei der Addition der Tage sollen aber nur die Werktage (Geschäftstage): Montag, Dienstag, Mittwoch, Donnerstag und Freitag beachtet werden.
Beispiel: Heute ist der 22.07. (Montag), wenn ich nun 7 Tage eingebe soll der 31.07. (Mittwoch) ausgegeben werden.
Bei der Addition der Tage sollen aber nur die Werktage (Geschäftstage): Montag, Dienstag, Mittwoch, Donnerstag und Freitag beachtet werden.
Beispiel: Heute ist der 22.07. (Montag), wenn ich nun 7 Tage eingebe soll der 31.07. (Mittwoch) ausgegeben werden.
Lösungen:

import time s=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"] a=input("Tag1 Tag") b=input("Tag1 Monat, bitte im Format Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec") c=input("Tag1 Jahr, bitte im Format (z.B) 2010=10") d=input("Tag2 Tag") e=input("Tag2 Monat, bitte im Format Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec") f=input("Tag2 Jahr bitte im Format (z.B) 2010=10") m=0 x=[a,b,c] def nächstermonat(x): p="" for l in range(len(s)): if l!=11: if s[l]==x: p=s[l+1] else: if s[l]==x: p=s[0] return(p) while time.strptime(str(a)+" "+str(b)+" "+str(c), "%d %b %y")!=time.strptime(str(d)+" "+str(e)+" "+str(f), "%d %b %y"): try: time.strptime(str(int(a)+1)+" "+str(b)+" "+str(c), "%d %b %y") a=int(a)+1 if time.strptime(str(a)+" "+str(b)+" "+str(c), "%d %b %y")[6]<5: m=m+1 except ValueError: if nächstermonat(b)!="Jan": time.strptime(str(1)+" "+nächstermonat(b)+" "+str(c), "%d %b %y") b=nächstermonat(b) a=1 m=m+1 else: time.strptime(str(1)+" "+s[0]+" "+str(int(c)+1), "%d %b %y") b="Jan" a=1 c=int(c)+1 if time.strptime(str(a)+" "+str(b)+" "+str(c), "%d %b %y")[6]<5: m=m+1 print ("zwischen den",x[0],x[1],x[2],"und den",d,e,f,"liegen",m,"Werktage")

""" #42: Bei Addition von Tage nur Werktage beachten Schreibe ein Programm welches die Anzahl der addierenden Tage abfragt und dann das Datum ausgibt. Bei der Addition der Tage sollen aber nur die Werktage (Geschaeftstage): Montag, Dienstag, Mittwoch, Donnerstag und Freitag beachtet werden. """ from datetime import datetime, timedelta def prf_werktage(datum, diff): date = datetime.strptime(datum, "%d.%m.%Y") print((datetime.strftime(date, "%a %d.%m.%Y"))) print("+", diff, "Wochentage") while diff > 0: if (datetime.strftime(date, "%a")) == "Sat" or (datetime.strftime(date, "%a")) == "Sun": date += timedelta(days=1) else: date += timedelta(days=1) diff -= 1 print((datetime.strftime(date, "%a %d.%m.%Y"))) prf_werktage("20.07.2013", 7)