Python :: Aufgabe #42

2 Lösungen Lösungen öffentlich

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.

Lösungen:

vote_ok
von Veigar (1120 Punkte) - 21.12.2015 um 15:03 Uhr
Quellcode ausblenden Python-Code
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")
                

vote_ok
von eisheiliger (3750 Punkte) - 03.04.2021 um 17:43 Uhr
Quellcode ausblenden Python-Code

"""
#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)